2017/02/07

[C/Cpp] Windows Get Keyboard State

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

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

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

沒有留言:

張貼留言