2017/02/07

[C/Cpp] Windows Get Keyboard State

Windows API裡面有個GetAsyncKeyState()可以偵測按下Keyboard上的哪個按鍵,這個function的好處就是不管有沒有focus在目前的程式上,只要程式有開著都能夠偵測。

首先要加入標頭檔
#include <Windows.h>
接著就可以在程式中用這個函式
GetAsyncKeyState(keycode)
其中的keycode就是Windows裡面對應的按鍵Key code
例如:
if(GetAsyncKeyState(65)){
    printf("Press A\n");
}
if(GetAsyncKeyState(32)){
    printf("Press Space\n");
}
if(GetAsyncKeyState(0x1B)){
    printf("Press Esc\n");
}
有時候程式效能太好,反應比人類的手指還快,明明只按一次但是會偵測一直按著,所以可以用個Sleep()稍微煞車一下。
if(GetAsyncKeyState(65)){
    printf("Press A\n");
    Sleep(200);
}
Windows對應的Key code看是要用十進位(DEC)或是十六進位(HEX)都可以。
可以參考下面這個圖片(十進位Keycode):

或是可以參考Windows開發網站列出來的Virtual-Key Codes(十六進位)。

沒有留言:

張貼留言