'Necesitas una forma, y un checkBox (CheckBox1)
Option Explicit
' Estructura para la función del api GetVersionEx
Private Type OSVERSIONINFO
dwOSVersionInfoSize As Long
dwMajorVersion As Long
dwMinorVersion As Long
dwBuildNumber As Long
dwPlatformId As Long
szCSDVersion As String * 128
End Type
' Declaraciones Api
Private Declare Function GetKeyboardState Lib "user32" (pbKeyState As Byte) As Long
Private Declare Function SetKeyboardState Lib "user32" (lppbKeyState As Byte) As Long
Private Declare Function GetKeyState Lib "user32" (ByVal nVirtKey As Long) As Long
Private Declare Function GetVersionEx Lib "kernel32" Alias "GetVersionExA" ( _
lpVersionInformation As OSVERSIONINFO) As Long
Private Declare Sub keybd_event Lib "user32" ( _
ByVal bVk As Byte, _
ByVal bScan As Byte, _
ByVal dwFlags As Long, _
ByVal dwExtraInfo As Long)
' Declaración de constantes
Private Const KEYEVENTF_EXTENDEDKEY = &H1
Private Const KEYEVENTF_KEYUP = &H2
Private Const VER_PLATFORM_WIN32_NT = 2
Private Const VER_PLATFORM_WIN32_WINDOWS = 1
Private Sub Form_Load()
Dim NumLock As Long
Dim CapsLock As Long
Dim ScrollLock As Long
' devuelve el estado de las teclas
NumLock = GetKeyState(vbKeyNumlock)
CapsLock = GetKeyState(vbKeyCapital)
ScrollLock = GetKeyState(vbKeyScrollLock)
' Establece los ckeckbox para mostrar el estado
bNoClick = True
If NumLock And 1 Then Check1(0).Value = 1
bNoClick = False
bNoClick = True
If CapsLock And 1 Then Check1(1).Value = 1
bNoClick = False
bNoClick = True
If ScrollLock And 1 Then Check1(2).Value = 1
bNoClick = False
Check1(0).Caption = "NumLock"
Check1(1).Caption = "CapsLock"
Check1(2).Caption = "ScrollLock"
End Sub
Private Sub CheckBox1_Click()
Dim OINFO As OSVERSIONINFO
Dim ret As Boolean
Dim keys(0 To 255) As Byte
If bNoClick Then Exit Sub
OINFO.dwOSVersionInfoSize = Len(OINFO)
GetVersionEx OINFO
GetKeyboardState keys(0)
'''''''''''''''''''''''''''''''
ret = keys(vbKeyCapital)
' Windows 95 / Windows 98
If OINFO.dwPlatformId = VER_PLATFORM_WIN32_WINDOWS Then
keys(vbKeyCapital) = Abs(Not ret)
SetKeyboardState keys(0)
' Windows NT
ElseIf OINFO.dwPlatformId = VER_PLATFORM_WIN32_NT Then
keybd_event vbKeyCapital, &H45, KEYEVENTF_EXTENDEDKEY Or 0, 0
keybd_event vbKeyCapital, &H45, KEYEVENTF_EXTENDEDKEY Or KEYEVENTF_KEYUP, 0
End If
' Tecla ScrollLock
'''''''''''''''''''''''''''''''
End Sub
'* MODIFICADO DE
http://www.recursosvisualbasic.com.ar/htm/listado-api/223-capslock-numlock-scroll.htm