Hook clavier récupérer vkCode
Bonjour à tous,
j'ai créé le code suivant pour installer un hook global bas niveau sur le clavier, mais je n'arrive pas à récupérer l'info sur la touche qui a été pressée.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| #include <Windows.h>
#include <iostream>
using namespace std;
HHOOK mouseHook;
LRESULT __stdcall hookCallBack(int nCode, WPARAM wParam, LPARAM lParam)
{
cout<<lParam->vkCode<<endl;
return CallNextHookEx(NULL,nCode,wParam,lParam);
}
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
if (!(mouseHook = SetWindowsHookEx(WH_KEYBOARD_LL, hookCallBack, NULL, 0)))
{
cout << "Failed to install mouse hook!" << endl;
}
MSG msg;
while (GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
UnhookWindowsHookEx(mouseHook);
return msg.wParam;
} |
D'après la documentation de microsoft sur la fonction de callback LowLevelKeyboardProc, le paramètre wParam indique l'action de la touche (wm_keydown, ...) et le paramètre lParam est un pointeur vers une structure KBDLLHOOKSTRUCT .
Cependant la ligne lParam->vkCode ne compile pas et j'ai l'erreur
=== Build: Release in clavier (compiler: GNU GCC Compiler) ===
clavier\main.cpp In function 'LRESULT hookCallBack(int, WPARAM, LPARAM)':
clavier\main.cpp 11 error: base operand of '->' is not a pointer
=== Build failed: 1 error(s), 0 warning(s) (0 minute(s), 0 second(s)) ===
qui me dit que lParam n'est pas un pointeur (et d'ailleurs il me semble que lParam est un entier qui vaut 7142884). Avez-vous une idée de pourquoi cela, et de comment récupérer le vkCode (sans devoir faire appel à une fonction du style GetAsyncKeyState) ?
Merci d'avance !