2010-08-16 132 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;

:)