2012-10-14 2 views
-1

La fonction suivante est appelée chaque fois que l'événement touche est pressée:détection d'une touche enfoncée et l'événement clé publié

static LRESULT CALLBACK LowLevelKeyboardProc(int nCode, WPARAM wParam, LPARAM lParam) { 

    printf("Key is pressed !\n"); 
    // If key pressed down,call function A 
    // If key released , call function B 
} 

Comment puis-je détecter ces événements?

La touche enfoncée peut être n'importe quelle touche d'un clavier de fenêtre . Je veux juste savoir si une touche a été pressée ou a été relâchée après avoir appuyé sur. Comment puis-je faire cela ?

+0

Vous devez utiliser deux différents messages: WM_KEYDOWN et WM_KEYUP –

+0

Vous pouvez trouver beaucoup d'exemples de la façon de le faire sur le Web en recherchant keylogger –

Répondre

1
static LRESULT CALLBACK LowLevelKeyboardProc(int nCode, WPARAM wParam, LPARAM lParam) 
{ 
    if (nCode >= 0) 
    { 
     if (wParam == WM_KEYDOWN || wParam == WM_SYSKEYDOWN) 
     { 
      functionA(); 
     } 
     else 
     { 
      functionB(); 
     } 
    } 
    return CallNextHookEx(hHook, nCode, wParam, lParam); 
} 
+0

quelle est la différence entre _WM_KEYDOWN_ et _WM_SYSKEYDOWN_? – saplingPro

+0

et il a bien fonctionné sans 'return CallNextHookEx (handleKeyboardHook, nCode, wParam, lParam);' – saplingPro

+0

WM_SYSKEYDOWN est retourné pour certaines touches, par exemple, F10 - Je pense à des raisons historiques. –

Questions connexes