Declarations
Add the following code into
the declarations section of a module:
Public Const
VK_CAPITAL = &H14
Public Type KeyboardBytes
kbByte(0 To
255) As Byte
End Type
Public kbArray As KeyboardBytes
Public Declare Function GetKeyState Lib
"user32" _
(ByVal nVirtKey As Long) As Long
Public Declare Function GetKeyboardState
Lib "user32" _
(kbArray As KeyboardBytes) As Long
Public Declare Function SetKeyboardState
Lib "user32" _
(kbArray As KeyboardBytes) As Long
Code
On
a form, add a 3 command buttons
(cmdToggle, cmdTurnOn, cmdTurnOff) and a
label (Label1). Add the following code to
the form:
Private Sub
Form_Load()
If CapsLock() = 1 Then Label1 =
"On" Else _
Label1 = "Off"
End Sub
Private Sub
cmdToggle_Click()
GetKeyboardState kbArray
kbArray.kbByte(VK_CAPITAL) = _
IIf(kbArray.kbByte(VK_CAPITAL) = 1, 0, 1)
SetKeyboardState kbArray
Label1 = IIf(CapsLock() = 1,
"On", "Off")
End Sub
Private Sub
cmdTurnOn_Click()
GetKeyboardState kbArray
kbArray.kbByte(VK_CAPITAL) = 1
SetKeyboardState kbArray
Label1 = IIf(CapsLock() = 1,
"On", "Off")
End Sub
Private Sub
cmdTurnOff_Click()
GetKeyboardState kbArray
kbArray.kbByte(VK_CAPITAL) = 0
SetKeyboardState kbArray
Label1 = IIf(CapsLock() = 1,
"On", "Off")
End Sub
Comments
The
keyboard APIs for VB4-16 and VB3 do not
support the byte data type.
By changing the Windows constant to
Public Const VK_NUMLOCK = &H90, you
can use the above to activate the NumLock
key.
|