GetAsyncKeyState

https://msdn.microsoft.com/ja-jp/library/dd375731.aspx https://msdn.microsoft.com/ja-jp/library/cc429812.aspx

関数呼び出し時にキーが押されているかどうか、また、前回の GetAsyncKeyState 関数呼び出し以降にキーが押されたかどうかを判定します。

SHORT GetAsyncKeyState(
  int vKey   // 仮想キーコード
);

パラメータ

vKey
[入力]最大 256 とおりの仮想キーコードのいずれかを指定します。詳細については、「」を参照してください。

Windows NT/2000:特定のキーの左キーと右キーを区別できます。詳細については、「解説」を参照してください。

戻り値

関数が成功すると、前回の GetAsyncKeyState 関数呼び出し以降にキーが押されたかどうか、およびキーが現在押されているかどうかを示す値が返ります。最上位ビットがセットされたときは現在そのキーが押されていることを示し、最下位ビットがセットされたときは前回の GetAsyncKeyState 関数呼び出し以降にそのキーが押されたことを示します。他のスレッド( またはプロセス)のウィンドウがキーボードフォーカスを備えている場合は、0 が返ります。

Windows 95:Windows 95 は、左キーと右キーを区別するための定数をサポートしていません。これらの定数を指定して GetAsyncKeyState を呼び出すと、0 が返ります。

解説

GetAsyncKeyState 関数は、マウスボタンの状態も取得できます。ただしこの関数は、物理的なボタンのマップ先である論理的なマウスボタンの状態ではなく、物理的なマウスボタンの状態を取得します。たとえば、GetAsyncKeyState(VK_LBUTTON) を呼び出すと、そのボタンが論理的な左ボタンと右ボタンのどちらに割り当てられているかにかかわりなく( 後者は「左利き用」の割り当て)、常に物理的な左ボタンの状態を返します。物理的なマウスボタンと論理的なマウスボタンの対応を調べるには、次の呼び出しを行います。

GetSystemMetrics(SM_SWAPBUTTON)

この呼び出しは、マウスボタンの左右が入れ替わっているときに TRUE を返します。

vKey パラメータの値として、VK_SHIFT、VK_CONTROL、VK_MENU の各仮想キーコード定数を指定できます。この場合、左右を区別することなく、Shift、Ctrl、Alt の各キーの状態を取得できます。

Windows NT/2000:vKey で次の仮想キーコード定数を指定して、次のキーの左右を区別できます。

コード意味
VK_LSHIFTVK_RSHIFT
VK_LCONTROLVK_RCONTROL
VK_LMENUVK_RMENU

左右を区別するこれらの定数は、GetKeyboardStateSetKeyboardStateGetAsyncKeyStateGetKeyStateMapVirtualKey の各関数に限って利用できます。

対応情報

Windows NT/2000:Windows NT 3.1 以降
Windows 95/98:Windows 95 以降
ヘッダーファイル:Winuser.h 内で宣言、Windows.h をインクルード
インポートライブラリ:User32.lib を使用

参照

GetKeyboardState, GetKeyState, , MapVirtualKey, SetKeyboardState

表示: