GetKeyboardState 関数 (winuser.h)
256 個の仮想キーの状態を、指定したバッファーにコピーします。
構文
BOOL GetKeyboardState(
[out] PBYTE lpKeyState
);
パラメーター
[out] lpKeyState
種類: PBYTE
各仮想キーの状態データを受け取る 256 バイト配列。
戻り値
種類: BOOL
関数が成功すると、戻り値は 0 以外になります。
関数が失敗した場合は、0 を返します。 詳細なエラー情報を得るには、GetLastError を呼び出します。
解説
アプリケーションはこの関数を呼び出して、すべての仮想キーの現在の状態を取得できます。 スレッドがメッセージ キューからキーボード メッセージを削除すると、状態が変わります。 キーボード メッセージがスレッドのメッセージ キューにポストされると状態は変わりません。また、キーボード メッセージが他のスレッドのメッセージ キューに投稿されたり、他のスレッドから取得されたりしても、状態は変わりません。 (例外: AttachThreadInput を介して接続されているスレッドは、同じキーボード状態を共有します)。
関数が戻ると、 lpKeyState パラメーターによって指される配列の各メンバーには、仮想キーの状態データが含まれます。 上位ビットが 1 の場合、キーはダウンします。それ以外の場合は、稼働中です。 キーがトグル キー (CAPS LOCK など) の場合、キーが切り替えられると下位ビットは 1 になり、キーが切り替えられる場合は 0 になります。 トグル以外のキーの場合、下位ビットは意味がありません。 トグル キーは、オンにすると切り替えられると言われます。 キーボードのトグル キーのインジケーター ライト (ある場合) は、キーが切り替えられるときにオンになり、キーが切り替えられるとオフになります。
個々のキーの状態情報を取得するには、 GetKeyState 関数を使用します。 対応するキーボード メッセージがメッセージ キューから取得されたかどうかに関係なく、個々のキーの現在の状態を取得するには、 GetAsyncKeyState 関数を使用します。
アプリケーションでは、lpKeyState が指す配列へのインデックスとして、仮想キー コード定数VK_SHIFT、VK_CONTROL、VK_MENUを使用できます。 これにより、左と右を区別せずに、Shift キー、Ctrl キー、または Alt キーの状態が表示されます。 アプリケーションでは、これらのキーの左と右のインスタンスを区別するためのインデックスとして、次の仮想キー コード定数を使用することもできます。
VK_LSHIFT |
VK_RSHIFT |
VK_LCONTROL |
VK_RCONTROL |
VK_LMENU |
VK_RMENU |
これらの左および右の区別定数は、 GetKeyboardState、 SetKeyboardState、 GetAsyncKeyState、 GetKeyState、 および MapVirtualKey 関数を介してのみアプリケーションで使用できます。
要件
サポートされている最小のクライアント | Windows 2000 Professional [デスクトップ アプリのみ] |
サポートされている最小のサーバー | Windows 2000 Server [デスクトップ アプリのみ] |
対象プラットフォーム | Windows |
ヘッダー | winuser.h (Windows.h を含む) |
Library | User32.lib |
[DLL] | User32.dll |
API セット | ext-ms-win-ntuser-rawinput-l1-1-0 (Windows 10 バージョン 10.0.14393 で導入) |