Je crée une application de console dans laquelle j'aimerais enregistrer des pressions de touches (comme la touche HAUT). J'ai créé un crochet de clavier de bas niveau qui est censé capturer toutes les touches dans n'importe quel thread et appeler ma fonction de rappel, mais cela ne fonctionne pas. Le programme se bloque un peu lorsque j'appuie sur une touche, mais n'invoque jamais le rappel. J'ai vérifié la documentation mais n'ai rien trouvé. Je ne sais pas si j'utilise SetWindowsHookEx() de manière incorrecte (à ma connaissance, il crée avec succès le crochet) ou ma fonction de rappel est incorrecte! Je ne suis pas sûr que ce soit faux! Merci d'avance pour l'aide.C++ SetWindowsHookEx WH_KEYBOARD_LL Configuration correcte
#include "Windows.h"
#include <iostream>
using namespace std;
HHOOK hookHandle;
LRESULT CALLBACK keyHandler(int nCode, WPARAM wParam, LPARAM lParam);
int _tmain(int argc, _TCHAR* argv[]) {
hookHandle = SetWindowsHookEx(WH_KEYBOARD_LL, keyHandler, NULL, 0);
if(hookHandle == NULL) {
cout << "ERROR CREATING HOOK: ";
cout << GetLastError() << endl;
getchar();
return 0;
}
MSG message;
while(GetMessage(&message, NULL, 0, 0) != 0) {
TranslateMessage(&message);
DispatchMessage(&message);
}
cout << "Press any key to quit...";
getchar();
UnhookWindowsHookEx(hookHandle);
return 0;
}
LRESULT CALLBACK keyHandler(int nCode, WPARAM wParam, LPARAM lParam) {
cout << "Hello!" << endl;
// Checks whether params contain action about keystroke
if(nCode == HC_ACTION) {
cout << ((KBDLLHOOKSTRUCT *) lParam)->vkCode << endl;
}
return CallNextHookEx(hookHandle, nCode,
wParam, lParam);
}
S'il vous plaît voir [ici] (http://stackoverflow.com/questions/2127112/global-keyboard-hook-not-working/2127292 # 2127292) pour une question similaire, que j'ai répondu qui vous aidera. – t0mm13b