<Return[G]><Top>

GetKeyState

Declare Function Api_GetKeyState& Lib "user32" Alias "GetKeyState" (ByVal nVirtKey&)

Declare Function GetKeyState Lib "user32" Alias "GetKeyState" (ByVal nVirtKey As Long) As Integer

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

パラメータ
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
    左右を区別するこれらの定数は、GetKeyboardState、SetKeyboardState、GetAsyncKeyState、GetKeyState、MapVirtualKey の各

    関数に限って利用できる。