Switch on Num lock in run time

Private Declare Function GetKeyboardState Lib "user32" (ByRef pbKeyState As Byte) As Integer
Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Integer, ByVal dwExtraInfo As Integer)

Const VK_NUMLOCK As Short = &H90S
Const KEYEVENTF_EXTENDEDKEY As Short = &H1S
Const KEYEVENTF_KEYUP As Short = &H2S

Private Sub form1_KeyDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles MyBase.KeyDown
Dim NumLockState As Boolean
Dim key(255) As Byte

GetKeyboardState(key(0))
NumLockState = key(VK_NUMLOCK)

If Not NumLockState Then 'Turn numlock on
'Simulate Key Press
keybd_event(VK_NUMLOCK, &H45S, KEYEVENTF_EXTENDEDKEY Or 0, 0)
'Simulate Key Release
keybd_event(VK_NUMLOCK, &H45S, KEYEVENTF_EXTENDEDKEY Or KEYEVENTF_KEYUP, 0)
End If

End Sub

Comments