J'utilise des crochets de bas niveau, mais je ne peux pas déterminer quelle touche a été enfoncée. Les valeurs sont les mêmes pour chaque touche. Est-ce que je fais quelque chose de mal?Quelle touche a été enfoncée? Crochets pour clavier
méthode 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);
}
définition de rappel (j'ai contenu dans l'application)
LRESULT CALLBACK LowLevelKeyboardProc(int nCode, WPARAM wParam, LPARAM lParam);
Les valeurs données avec une touche pressée
nCode:0 | wParam:0x100 | lParam:0x18fe14
seulement les changements de wParam à 0x101 sur la touche haut (0x100 sur la touche enfoncée)
Si je peux demander, quel est le scénario global? Il pourrait y avoir d'autres moyens de réaliser ce que vous essayez de faire. Également, y a-t-il des appels d'API que vous faites échouer? Avez-vous vérifié la valeur de retour de SetWindowsHookEx? – obelix
avez-vous même essayé de le rechercher dans MSDN? lParam est plus qu'un simple nombre. Je suis aussi d'accord avec obelix sur le fait qu'il y a probablement une meilleure façon d'atteindre votre objectif global que l'accrochage au clavier. – tenfour
@tenfour Merci, c'était vraiment utile. Pourriez-vous le poster comme une réponse avec 'KBDLLHOOKSTRUCT * kbdStruct = (KBDLLHOOKSTRUCT *) lParam;'. Merci –