C++ SetWindowsHookEx WH_KEYBOARD_LL de Configuration Correct

Je suis de la création d'une application console dans laquelle j'aimerais enregistrer les frappes au clavier (comme la FLÈCHE vers le HAUT). J'ai créé un Faible Niveau de Hook Clavier qui est censé capturer toutes les frappes de Touche dans n'importe quel thread et d'appeler ma fonction de callback, mais il ne fonctionne pas. Le programme des stands pour un peu, quand j'appuie sur une touche, mais jamais appelle la fonction de rappel. J'ai vérifié la documentation mais je n'ai pas trouvé quoi que ce soit. Je ne sais pas si je suis en utilisant SetWindowsHookEx() incorrecte (à ma connaissance il réussit à créer le crochet) ou ma fonction de callback est incorrect! Je ne suis pas sûr de ce qui est faux! Merci d'avance pour l'aide.

#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);
}
Merci de voir here pour une question similaire, à qui j'ai répondu que va vous aider.

OriginalL'auteur Mahir | 2010-01-30