2010-08-16 86 views
1

我正在使用低級掛鉤,但我無法確定按下了哪個鍵。每個密鑰的值都相同。在這裏,我做錯了什麼?按了什麼鍵?鍵盤掛鉤

掛鉤方法

void hook() { 

    /** this part is probably not important since I use global WH_KEYBOARD_LL, is that right? */ 
    HWND hwnd = FindWindow(NULL, "Vertices.exe"); 
    HINSTANCE instance = (HINSTANCE)GetWindowLong(hwnd, GWL_HINSTANCE); 
    /** end part */ 

    SetWindowsHookEx(WH_KEYBOARD_LL, LowLevelKeyboardProc, instance /** or NULL ? */, NULL); 
} 

回調定義(我有在應用內容)

LRESULT CALLBACK LowLevelKeyboardProc(int nCode, WPARAM wParam, LPARAM lParam); 

與任何鍵的給定值按下

nCode:0 | wParam:0x100 | lParam:0x18fe14 

只是wParam參數更改爲0x101在鍵上(0x100在鍵上)

+0

如果我可能會問,什麼是整體情況?可能有其他方法來實現你想要做的事情。 也是任何你失敗的API調用?你檢查了SetWindowsHookEx的返回值嗎? – obelix 2010-08-16 16:51:13

+1

你甚至嘗試在MSDN中查看它嗎? lParam不僅僅是一個數字。同樣我也贊同obelix的說法,可能有更好的方法來實現你的總體目標,而不是鍵盤掛鉤。 – tenfour 2010-08-16 16:51:28

+0

@tenfour謝謝,這確實有幫助。您是否介意將它作爲「KBDLLHOOKSTRUCT * kbdStruct =(KBDLLHOOKSTRUCT *)lParam;'的答案發布?謝謝 – 2010-08-16 17:02:03

回答

3

KBDLLHOOKSTRUCT *kbdStruct = (KBDLLHOOKSTRUCT*)lParam;

:)