GetKeyState

指定された仮想キーの状態を取得します。状態とは、キーが押されているか、押されていないか、トグルになっているかどうか( オンとオフの 2 つがあり、キーを押すたびに入れ替わります)を表します。

SHORT GetKeyState(
  int nVirtKey   // 仮想キーコード
);

パラメータ

nVirtKey
[入力]仮想キーコードを指定します。希望の仮想キーが文字キーまたは数字キー(A~Z、a~z、0~9)である場合、nVirtKey にその文字の ASCII コードを指定しなければなりません。他のキーの場合は、仮想キーコードを指定しなければなりません。

ヨーロッパなどの英語以外のキーボードレイアウトを使っている場合、A~Z と 0~9 の各範囲に相当する ASCII コードは、アクセント付きを含め、ほとんどの文字を表すために使われています。たとえば、ドイツ語のキーボードレイアウトでは、ASCII の「O」(0x4F)の値に相当する仮想キーは「o」キーを意味しますが、VK_OEM_1 は「ウムラウト(¨)付きの o」キーを意味します。

戻り値

戻り値は、指定された仮想キーの状態を表します。各値は次のことを意味します。

•最上位ビットが 1 のときはキーが押されていることを、0 のときはキーが押されていないことを示します。

•最下位ビットが 1 のときはキーがトグル状態にあることを示します。たとえば、CapsLock キーが ON になっているときは、トグル状態になります。最下位ビットが 0 のときはキーが OFF になっていて、トグルが解除されていることを示します。キーボードにトグルキーのインジケータランプが用意されている場合、キーがトグル状態になっているとランプは点灯し、トグル解除状態ではランプは消灯します。

解説

スレッドがメッセージキューからキーメッセージを読み出すたびに、この関数が返すキーの状態は変化します。キーの状態は、ハードウェアによる割り込みレベルの状態を反映しません。割り込みレベルの情報を取得するには、GetAsyncKeyState 関数を使ってください。

アプリケーションは、キーボード入力メッセージに応じて GetKeyState を呼び出します。この関数は、入力メッセージが生成されたときのキーの状態を取得します。

すべての仮想キーの状態を取得するには、GetKeyboardState 関数を使います。

アプリケーションは nVirtKey パラメータの値として、VK_SHIFT、VK_CONTROL、VK_MENU の各仮想キーコード定数を使えます。この場合、左右を区別することなく、Shift、Ctrl、Alt の各キーの状態を取得できます。また、アプリケーションは nVirtKey の値として次の仮想キーコード定数を使うことにより、これらのキーの左右を区別できます。

VK_LSHIFT

VK_RSHIFT

VK_LCONTROL

VK_RCONTROL

VK_LMENU

VK_RMENU

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

対応情報

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

参照

GetAsyncKeyState, GetKeyboardState, MapVirtualKey, SetKeyboardState

表示: