Какая клавиша была нажата? Крючки для клавиатуры

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

Крючковый метод

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 при нажатии клавиши)


person Mikulas Dite    schedule 16.08.2010    source источник
comment
Если я могу спросить, каков общий сценарий? Могут быть другие способы добиться того, что вы пытаетесь сделать. Кроме того, какие-либо из вызовов API, которые вы делаете, терпят неудачу? Вы проверили возвращаемое значение SetWindowsHookEx?   -  person obelix    schedule 16.08.2010
comment
Вы даже пытались найти его в MSDN? lParam — это больше, чем просто число. также я согласен с obelix в том, что, вероятно, есть лучший способ достичь вашей общей цели, чем подключение клавиатуры.   -  person tenfour    schedule 16.08.2010
comment
@tenfour Спасибо, это было действительно полезно. Не могли бы вы опубликовать это как ответ с KBDLLHOOKSTRUCT *kbdStruct = (KBDLLHOOKSTRUCT*)lParam;. Спасибо   -  person Mikulas Dite    schedule 16.08.2010