2012-10-14 55 views
-1

每当按键事件发生时,下面的函数调用:检测键按下和释放键事件

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 
} 

如何检测这些事件?

按下的按键可以是任何按键,从窗口键盘。我只是想知道一个按键是否被按下或按下后被释放。我该怎么做呢 ?

+0

你必须使用两个不同的消息:通过搜索键盘记录 –

+0

你可以找到很多的如何做到这一点在网络上的例子吗? –

回答

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

是什么_WM_KEYDOWN_和_WM_SYSKEYDOWN_之间的区别WM_KEYDOWN和WM_KEYUP – saplingPro

+0

并且它一直没有返回CallNextHookEx(handleKeyboardHook,nCode,wParam,lParam);' – saplingPro

+0

WM_SYSKEYDOWN返回了一些键,例如,F10 - 我认为是历史原因。 –