2012-10-14 68 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 - 我認爲是歷史原因。 –