Page 1 of 1
Switch Off Num Lock
Posted: Mon Nov 26, 2012 3:13 am
by IdeasVacuum
This code switches
Num Lock on:
Code: Select all
Global NumLockOn.INPUT
NumLockOn\type = #INPUT_KEYBOARD
NumLockOn\ki\wVk = #VK_NUMLOCK
NumLockOn\ki\wScan = 144
NumLockOn\ki\dwFlags = 0
NumLockOn\ki\time = 0
NumLockOn\ki\dwExtraInfo = 0
If(GetKeyState_(#VK_NUMLOCK) = #False) : SendInput_(1,@NumLockOn,SizeOf(INPUT)) : EndIf
This code however, does not switch
Num Lock off:
Code: Select all
Global NumLockOff.INPUT
NumLockOff\type = #INPUT_KEYBOARD
NumLockOff\ki\wVk = #VK_NUMLOCK
NumLockOff\ki\wScan = 144
NumLockOff\ki\dwFlags = #KEYEVENTF_KEYUP
NumLockOff\ki\time = 0
NumLockOff\ki\dwExtraInfo = 0
If(GetKeyState_(#VK_NUMLOCK) = #True) : SendInput_(1,@NumLockOff,SizeOf(INPUT)) : EndIf
What am I doing wrong?
Re: Switch Off Num Lock
Posted: Mon Nov 26, 2012 3:52 am
by netmaestro
You must press and release the key, as you would physically:
Code: Select all
Procedure NumLock_ON()
Dim numlock.INPUT(1)
With numlock(0)
\type = #INPUT_KEYBOARD
\ki\wVk = #VK_NUMLOCK
\ki\wScan = 144
\ki\dwFlags = 0
\ki\time = 0
\ki\dwExtraInfo = 0
EndWith
With numlock(1)
\type = #INPUT_KEYBOARD
\ki\wVk = #VK_NUMLOCK
\ki\wScan = 144
\ki\dwFlags = #KEYEVENTF_KEYUP
\ki\time = 0
\ki\dwExtraInfo = 0
EndWith
If Not GetKeyState_(#VK_NUMLOCK)
SendInput_(2,@NumLock(),SizeOf(INPUT))
EndIf
ProcedureReturn
EndProcedure
Procedure NumLock_OFF()
Dim numlock.INPUT(3)
With numlock(0)
\type = #INPUT_KEYBOARD
\ki\wVk = #VK_NUMLOCK
\ki\wScan = 144
\ki\dwFlags = 0
\ki\time = 0
\ki\dwExtraInfo = 0
EndWith
With numlock(1)
\type = #INPUT_KEYBOARD
\ki\wVk = #VK_NUMLOCK
\ki\wScan = 144
\ki\dwFlags = #KEYEVENTF_KEYUP
\ki\time = 0
\ki\dwExtraInfo = 0
EndWith
If GetKeyState_(#VK_NUMLOCK)
SendInput_(2,@NumLock(),SizeOf(INPUT))
EndIf
ProcedureReturn
EndProcedure
NumLock_ON()
Delay(3000)
NumLock_OFF()
Re: Switch Off Num Lock
Posted: Mon Nov 26, 2012 4:05 am
by ts-soft
This switches the numlock
Code: Select all
Procedure SwitchNumlock()
keybd_event_(#VK_NUMLOCK, 0, 0, 0)
keybd_event_(#VK_NUMLOCK, 0, #KEYEVENTF_KEYUP, 0)
EndProcedure
For i = 0 To 100
SwitchNumlock()
Delay(200)
Next
Re: Switch Off Num Lock
Posted: Mon Nov 26, 2012 4:11 am
by netmaestro
Deprecated

Re: Switch Off Num Lock
Posted: Mon Nov 26, 2012 4:20 am
by IdeasVacuum
Thanks netmaestro, I'll stick with the SendInput method.
Works really nicely, I think I'll just sit here for a while watching the LED toggle on/of.........
Re: Switch Off Num Lock
Posted: Mon Nov 26, 2012 4:34 am
by netmaestro
Works really nicely, I think I'll just sit here for a while watching the LED toggle on/of.........
I bet it doesn't cost your family much to please you at Christmas

Re: Switch Off Num Lock
Posted: Mon Nov 26, 2012 5:27 am
by IdeasVacuum
..... could use the keyboard as an xmas tree light

Re: Switch Off Num Lock
Posted: Mon Nov 26, 2012 8:48 am
by MachineCode
netmaestro wrote:Deprecated

Not until Microsoft removes it from the OS.

Re: Switch Off Num Lock
Posted: Mon Nov 26, 2012 9:42 am
by Shield
Well it is officially marked as superseded by Microsoft.
So SendInput should be used.
Re: Switch Off Num Lock
Posted: Mon Nov 26, 2012 3:56 pm
by IdeasVacuum
Thanks for your tip too TS-Soft, didn't spot it was yours yesterday because for some strange reason netmaestro's frog image replaced yours........
Looks as though MS are finally moving away from some of the older API. You can often see why they would want to, but sometimes the replacement could have been better designed.