VB-Homepage Tipp 197

CAPS & NUM LOOK setzen / aufheben ohne Control (nur W95/98)

Leider nur unter Windows 95/98 nutzbar ist folgender Tipp, der Ihnen zumindestens das Einbinden eines Controls erspart.

Dabei geht es um das Einschalten, das Ausschalten und das Umkehren des derzeitigen Zustands.Für ein Beispielprojekt benötigen Sie eine Form mit drei Button (Coomand1 - 3).

Allgemein / Deklarationen
Const VK_CAPITAL = &H14

Private Type KeyboardBytes
   kbByte(0 To 255) As Byte
End Type

Private kbArray As KeyboardBytes
Private Declare Function GetKeyState Lib "user32" (ByVal nVirtKey As Long) As Long
Private Declare Function GetKeyboardState Lib "user32" (kbArray As KeyboardBytes) As Long
Private Declare Function SetKeyboardState Lib "user32" (kbArray As KeyboardBytes) As Long

Command1_Click (Anschalten)
GetKeyboardState kbArray
kbArray.kbByte(VK_CAPITAL) = 1
SetKeyboardState kbArray

Command2_Click (Ausschalten)
GetKeyboardState kbArray
kbArray.kbByte(VK_CAPITAL) = 0
SetKeyboardState kbArray

Command3_Click (Aktuellen Zustand umkehren)
GetKeyboardState kbArray
kbArray.kbByte(VK_CAPITAL) = IIf(kbArray.kbByte(VK_CAPITAL) = 1, 0, 1)
SetKeyboardState kbArray

Das man diesen Tipp natürlich auch auf andere Tasten anwenden kann, können Sie sich sicher schon denken. Dazu gehört lediglich die Definition der Konstanten unter Allgemein/Deklarationen und die entsprechende Aufrufmodifizierung.
Aus diesem Grund packe ich Ihnen gleich noch ein paar Beispiele mit rein.
Const VK_NUMLOCK = &H90
Const VK_PRINT = &H2A
Const VK_RETURN = &HD
Const VK_F1 = &H70
Const VK_ESCAPE = &H1B
Const VK_DELETE = &H2E

Für ein kleines Scherzprogramm bräuchten Sie folgende Angaben unter Allgemein/Deklarationen.
Const VK_SCROLL = &H91
Const VK_CAPITAL = &H14
Const VK_NUMLOCK = &H90

Private Type KeyboardBytes
   kbByte(0 To 255) As Byte
End Type

Private kbArray As KeyboardBytes

Private Declare Function GetKeyState Lib "user32" (ByVal nVirtKey As Long) As Long
Private Declare Function GetKeyboardState Lib "user32" (kbArray As KeyboardBytes) As Long
Private Declare Function SetKeyboardState Lib "user32" (kbArray As KeyboardBytes) As Long

Desweiteren einen Timer, dessen Interval Sie auf 100 stellen und folgende Anweisung übergeben.

GetKeyboardState kbArray
kbArray.kbByte(VK_NUMLOCK) = IIf(kbArray.kbByte(VK_NUMLOCK) = 1, 0, 1)
SetKeyboardState kbArray

GetKeyboardState kbArray
kbArray.kbByte(VK_CAPITAL) = IIf(kbArray.kbByte(VK_CAPITAL) = 1, 0, 1)
SetKeyboardState kbArray

GetKeyboardState kbArray
kbArray.kbByte(VK_SCROLL) = IIf(kbArray.kbByte(VK_SCROLL) = 1, 0, 1)
SetKeyboardState kbArray

Freudiges Lichterspiel !


Tipp-Download

Quelle :

Zurück zur Übersichtsseite