Until I added a settimer, it then freezes after it detects the first key, & after pressing around 20 keys the function stops detecting the keys, or the script crashes
No idea why, I'm no expert on functions ..
My script :
Code: Select all
#Persistent
#SingleInstance, force
global x := 0
global wParam := 0
global Param := 0
global KeyName := 0
OnExit, Unhook
hHookKeybd := SetWindowsHookEx(WH_KEYBOARD_LL := 13, RegisterCallback("Keyboard", "Fast"))
hHookMouse := SetWindowsHookEx(WH_MOUSE_LL := 14, RegisterCallback("MouseMove", "Fast"))
;gosub wx
SetTimer, wx,1
Return
Unhook:
UnhookWindowsHookEx(hHookKeybd)
UnhookWindowsHookEx(hHookMouse)
ExitApp
Keyboard(nCode, wParam, lParam)
{
Critical
SetFormat, Integer, H
If ((wParam = 0x100) ; WM_KEYDOWN
|| (wParam = 0x101)) ; WM_KEYUP
{
KeyName := GetKeyName("vk" NumGet(lParam+0, 0))
;SingleKey := GetKeyName("vk" NumGet(lParam+0, 0))
;Tooltip, % (wParam = 0x100) ? KeyName " Down" : KeyName " Up"
SetFormat, IntegerFast, D
x:=x*10
tooltip %x%
sleep 1000
SetFormat, Integer, H
;sleep,10
x:=0
;CallNextHookEx(nCode, wParam, lParam)
;goto wx
return
}
CallNextHookEx(nCode, wParam, lParam)
}
SetWindowsHookEx(idHook, pfn)
{
Return DllCall("SetWindowsHookEx", "int", idHook, "Ptr", pfn, "Uint", DllCall("GetModuleHandle", "Uint", 0), "Uint", 0)
}
UnhookWindowsHookEx(hHook)
{
Return DllCall("UnhookWindowsHookEx", "Uint", hHook)
}
CallNextHookEx(nCode, wParam, lParam, hHook = 0)
{
Return DllCall("CallNextHookEx", "Uint", hHook, "int", nCode, "Uint", wParam, "Uint", lParam)
}
wx:
x++
;sleep 100
tooltip %x% %Param% %KeyName%
Keyboard(nCode, wParam, lParam)
;CallNextHookEx(nCode, wParam, lParam)
return
Esc::ExitApp