'Written: June 21, 2009
'Author: Leith Ross
'Summary: Turns the CAPS LOCK, on and off.
' Works with Windows NT, 2000, 2002, 2003, and XP
'1. GetCapsLockStatus returns a boolean value. True if the key lock is on or false if it isn't.
'2. CapsLockToggle changes the key lock to the opposite state.
'3. CapsLockOn sets the key lock.
'4. CapsLockOff releases the key lock.
Private Const VK_CAPITAL = &H14
Private Const KEYEVENTF_EXTENDEDKEY = &H1
Private Const KEYEVENTF_KEYUP = &H2
Private Declare Sub keybd_event _
Lib "user32.dll" _
(ByVal bVk As Byte, _
ByVal bScan As Byte, _
ByVal dwFlags As Long, _
ByVal dwExtraInfo As Long)
Public Declare Function GetKeyState _
Lib "user32.dll" _
(ByVal nVirtKey As Long) As Integer
'-----------------------------------'
' CAP LOCK ROUTINES '
'-----------------------------------'
Sub CapsLockToggle()
keybd_event VK_CAPITAL, 0, 0, 0
keybd_event VK_CAPITAL, 0, KEYEVENTF_KEYUP, 0
End Sub
Sub CapsLockOn()
If Not (GetKeyState(VK_CAPITAL) = 1) Then
keybd_event VK_CAPITAL, 0, 0, 0
keybd_event VK_CAPITAL, 0, KEYEVENTF_KEYUP, 0
End If
End Sub
Sub CapsLockOff()
If (GetKeyState(VK_CAPITAL) And 1) Then
keybd_event VK_CAPITAL, 0, 0, 0
keybd_event VK_CAPITAL, 0, KEYEVENTF_KEYUP, 0
End If
End Sub
Function GetCapsLockStatus() As Boolean
GetCapsLockStatus = GetKeyState(VK_CAPITAL)
End Function