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 при нажатии клавиши)
Если я могу спросить, что такое общий сценарий? Могут быть другие способы добиться того, что вы пытаетесь сделать. Также есть ли какие-либо вызовы API, которые вы делаете с ошибкой? Вы проверили возвращаемое значение SetWindowsHookEx? – obelix
Вы даже пытались найти его в MSDN? lParam - это больше, чем просто число. также я согласен с obelix, что, вероятно, лучший способ достичь вашей общей цели, кроме клавиатуры. – tenfour
@tenfour Спасибо, это было действительно полезно. Не могли бы вы разместить его в качестве ответа с помощью KBBLLHOOKSTRUCT kbdStruct = (KBDLLHOOKSTRUCT *) lParam; '. благодаря –