<Return[G]><Top>

GetKeyboardState

Declare Function Api_GetKeyboardState& Lib "user32" Alias "GetKeyboardState" (pbKeyState As byte)

Declare Function GetKeyboardState Lib "user32" Alias "GetKeyboardState" (pbKeyState As Byte) As Long

256 個の仮想キーの状態を、指定されたバッファへコピーする。

パラメータ
lpKeyState
    [入力]すべての仮想キーの状態を保持する 256 バイトの配列へのポインタを指定する。
 

戻り値
    関数が成功すると、0 以外の値が返る。
    関数が失敗すると、0 が返る。拡張エラー情報を取得するには、GetLastError 関数を使う。

解説
    アプリケーションはこの関数を呼び出して、すべての仮想キーの現在の状態を一度に取得できる。

    スレッドがメッセージキューからキーボードメッセージを削除すると、仮想キーの状態が変化する。

    キーボードメッセージがスレッドのメッセージキューにポストされたり、他のスレッドのメッセージキューへのキーボードメッセージのポストや削除が

    発生しても、状態は変化しない。

    (例外は、AttachThreadInput をとおして相互に接続されている複数のスレッドが同じキーボード状態を共有している場合である。)
    この関数から制御が返ると、lpKeyState パラメータが指す配列の各メンバは、各仮想キーの状態データを保持する。

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

    最下位ビットが 1 のときはキーがトグル状態にあることを、0 のときはトグルが解除されていることを示す。

    たとえば、CapsLock キーが ON になっているときは、トグル状態になる。

    最下位ビットが 0 になっている場合、キーは OFF で、トグルが解除されていることを意味する。

    キーボードにトグルキーのインジケータランプが用意されている場合、キーがトグル状態になっているとランプは点灯し、トグル解除状態ではラ

    ンプは消灯する。
    個別のキーに関する状態情報を取得するには、GetKeyState 関数を使う。

    対応するキーボードメッセージがメッセージキューから取得されたかどうかにかかわりなく、個別のキーの現在の状態を取得するには、

    GetAsyncKeyState 関数を使う。
    アプリケーションは lpKeyState パラメータが指す配列へのインデックスとして、VK_SHIFT、VK_CONTROL、VK_MENU の各仮想キー

    コード定数を使える。この場合、左右を区別することなく、Shift、Ctrl、Alt の各キーの状態を取得できる。

    また、アプリケーションはインデックスとして次の仮想キーコード定数を使うことにより、これらのキーの左右を区別できる。
    VK_LSHIFT
    VK_RSHIFT
    VK_LCONTROL
    VK_RCONTROL
    VK_LMENU
    VK_RMENU