<Return[G]><Top>

GetAsynckeyState

Declare Function Api_GetAsyncKeyState& Lib "user32" Alias "GetAsyncKeyState" (ByVal vKey&)

Declare Function GetAsyncKeyState Lib "user32" Alias "GetAsyncKeyState" (ByVal vKey As Long) As Integer

関数呼び出し時にキーが押されているかどうか、また、前回の GetAsyncKeyState 関数呼び出し以降にキーが押されたかどうかを判定する。

パラメータ
vKey
    [入力]最大 256 とおりの仮想キーコードのいずれかを指定する。
    Windows NT/2000:特定のキーの左キーと右キーを区別できる。

戻り値
    関数が成功すると、前回の GetAsyncKeyState 関数呼び出し以降にキーが押されたかどうか、およびキーが現在押されているかどうかを示

    す値が返る。最上位ビットがセットされたときは現在そのキーが押されていることを示し、最下位ビットがセットされたときは前回の

    GetAsyncKeyState 関数呼び出し以降にそのキーが押されたことを示す。

    他のスレッド( またはプロセス)のウィンドウがキーボードフォーカスを備えている場合は、0 が返る。
    Windows 95:Windows 95 は、左キーと右キーを区別するための定数をサポートしていない。

    これらの定数を指定して GetAsyncKeyState を呼び出すと、0 が返る。

解説
    GetAsyncKeyState 関数は、マウスボタンの状態も取得できる。ただしこの関数は、物理的なボタンのマップ先である論理的なマウスボタ

    ンの状態ではなく、物理的なマウスボタンの状態を取得する。たとえば、GetAsyncKeyState(VK_LBUTTON) を呼び出すと、そのボタン

    が論理的な左ボタンと右ボタンのどちらに割り当てられているかにかかわりなく( 後者は「左利き用」の割り当て)、常に物理的な左ボタ

    ンの状態を返す。物理的なマウスボタンと論理的なマウスボタンの対応を調べるには、次の呼び出しを行う。
    GetSystemMetrics(SM_SWAPBUTTON)
    この呼び出しは、マウスボタンの左右が入れ替わっているときに TRUE を返す。
    vKey パラメータの値として、VK_SHIFT、VK_CONTROL、VK_MENU の各仮想キーコード定数を指定できる。

    この場合、左右を区別することなく、Shift、Ctrl、Alt の各キーの状態を取得できる。
    Windows NT/2000:vKey で次の仮想キーコード定数を指定して、次のキーの左右を区別できる。

    コード                     

意味                  

    VK_LSHIFT

VK_RSHIFT

    VK_LCONTROL

VK_RCONTROL

    VK_LMENU

VK_RMENU

    左右を区別するこれらの定数は、GetKeyboardState、SetKeyboardState、GetAsyncKeyState、GetKeyState、MapVirtualKey の各

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