<Return[G]><Top>

GetKeyNameText

Declare Function Api_GetKeyNameText& Lib "user32" Alias "GetKeyNameTextA" (ByVal lParam&, ByVal lpString$, ByVal nSize&)

Declare Function GetKeyNameText Lib "user32" Alias "GetKeyNameTextA" (ByVal lParam As Long, ByVal lpString As String, ByVal nSize As Long) As Long

キーの名前を表す文字列を取得する。

パラメータ
lParam
    [入力]処理されるキーボードメッセージ(WM_KEYDOWN など)の第 2 パラメータを指定する。この関数は、IParam の次のパートを解釈

    する。

    ビット         

意味                                                                                                                                                                 

    16–23

スキャンコード。

    24

拡張キーフラグ。拡張キーボードのいくつかのキーを区別する。

    25

 

"Don't care"(左右を区別しない)ビット。アプリケーションはこのビットをセットしてこの関数を呼び出すと、この関数は、たとえば左右の Ctrl キーや、左右の Shift キーを区別しなくなる。

lpString
    [出力]キーの名前を受け取るバッファへのポインタを指定する。
nSize
    [入力]キーの名前を表す文字列の最大サイズを、終端の null 文字を含め、TCHAR 単位で指定する。(このパラメータは、lpString パ

    ラメータが指すバッファと同じサイズであるべきである)。

戻り値
    関数が成功すると、null で終わる文字列が指定されたバッファへコピーされ、その文字列の長さが返る。ただし、終端の null 文字は長さ

    に含まれていない。
    関数が失敗すると、0 が返る。拡張エラー情報を取得するには、 関数を使う。

解説
    キーの名前を表す文字列のフォーマットは、現在のキーボードのレイアウトによって異なる。キーボードドライバは、2 文字以上の名前が付い

    たキーが押された場合に備えて、キー名のリストを文字列の形で保持する。キー名は、現在インストールされているキーボードのレイアウトに

    従って変換される。文字キーの名前は、その文字そのものである。デッドキーの名前はそのとおり(たとえば「'」)に出力される。(英語以外

    の言語ではアクセントやウムラウトなどの文字飾りを使うことがある。たとえば、最初に「'」、次に「a」を押すと、アクサンテギュ付きの a

    を入力できるキーボードと OS がある。このような場合、「'」をデッドキーと呼ぶ。)。