2010-08-16 4 views
1

Я использую крючки низкого уровня, но не могу определить, какой ключ был нажат. Значения одинаковы для каждого ключа. Это что-то, что я делаю неправильно?Какой ключ был нажат? Ключи для клавиатуры

метод Hook

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

+1

Вы даже пытались найти его в MSDN? lParam - это больше, чем просто число. также я согласен с obelix, что, вероятно, лучший способ достичь вашей общей цели, кроме клавиатуры. – tenfour

+0

@tenfour Спасибо, это было действительно полезно. Не могли бы вы разместить его в качестве ответа с помощью KBBLLHOOKSTRUCT kbdStruct = (KBDLLHOOKSTRUCT *) lParam; '. благодаря –

ответ

Смежные вопросы