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_CONTROLVK_MENUを使用できます。 これにより、左と右を区別せずに、Shift キー、Ctrl キー、または Alt キーの状態が表示されます。 アプリケーションでは、これらのキーの左と右のインスタンスを区別するためのインデックスとして、次の仮想キー コード定数を使用することもできます。

VK_LSHIFT
VK_RSHIFT
VK_LCONTROL
VK_RCONTROL
VK_LMENU
VK_RMENU
 

これらの左および右の区別定数は、 GetKeyboardStateSetKeyboardStateGetAsyncKeyStateGetKeyStateおよび 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 で導入)

関連項目