システム全体で特定のキーが押されているかを調べる
自分のウィンドウでキーボードが押されればもちろん確認できますよね
でしたら、自分のウィンドウにフォーカスが無い時、もしくは他のウィンドウで操作中に
特定のキーが押されてるかどうか確認する方法を試してみたいと思います。
そのために GetAsyncKeyState(仮想キーコード) という関数を使用します
この関数は、前回の GetAsyncKeyState 関数呼び出し以降に目的のキーが押されたかどうかを判定する関数です
仮想キーコードは、WINUSER.H ヘッダファイルで記載されています。
WINUSER.Hを開いて、VK_ で検索すると容易に見つかります。
ほぼ総てのキーボードのキーを網羅しています
以下のプログラムでは、自アプリケーションにフォーカスが有ろうが無かろうが、
CTRL/ALT/SHIFT/マウス左ボタン/マウス右ボタン/A/1 が押されたこと確認できます。
#include <stdio.h>
#include <windows.h>
int main(){
while(1){
//仮想キーコードは、WINUSER.H ヘッダファイルで記載されている
if(GetAsyncKeyState (VK_CONTROL)){
//CTRLキーが押されている
printf("CTRL\n");
}
if(GetAsyncKeyState (VK_MENU)){
//ALTが押されている
printf("ALT\n");
}
if(GetAsyncKeyState (VK_SHIFT)){
//SHIFTが押されている
printf("SHIFT\n");
}
if(GetAsyncKeyState (VK_LBUTTON)){
//マウス左ボタンが押されている
printf("Mouse Left\n");
}
if(GetAsyncKeyState (VK_RBUTTON)){
//マウス右ボタンが押されている
printf("Mouse Right\n");
}
if(GetAsyncKeyState ('A')){
//Aキーが押されている
printf("A\n");
}
if(GetAsyncKeyState ('1')){
//1が押されている
printf("1\n");
}
Sleep(10);
}
return 0;
}
▲トップページ
>
Windows と C++