Recording Alt + ? key presses with API hook?
Posted: Sun May 17, 2009 1:38 am
				
				I'm messing around with keyboard hooks, and normal keys catch fine. But I can't figure out how to catch any keys pressed while holding Alt.
Here's what my code looks like:
			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)
   