VkKeyScanExA 関数 (winuser.h)
文字を対応する仮想キー コードとシフト状態に変換します。 この関数は、入力ロケール識別子によって識別される入力言語と物理キーボード レイアウトを使用して文字を変換します。
構文
SHORT VkKeyScanExA(
[in] CHAR ch,
[in] HKL dwhkl
);
パラメーター
[in] ch
型: TCHAR
仮想キー コードに変換される文字。
[in] dwhkl
型: HKL
文字の変換に使用される入力ロケール識別子。 このパラメーターには、LoadKeyboardLayout 関数によって以前に返された任意の入力ロケール識別子を指定できます。
戻り値
型: SHORT
関数が成功した場合、戻り値の下位バイトには仮想キー コードが含まれ、上位バイトにはシフト状態が含まれます。これは、次のフラグ ビットの組み合わせにすることができます。
戻り値 | 形容 |
---|---|
|
いずれかの Shift キーが押されます。 |
|
Ctrl キーを押します。 |
|
Alt キーを押します。 |
|
半角キーを押す |
|
予約済み (キーボード レイアウト ドライバーによって定義されます)。 |
|
予約済み (キーボード レイアウト ドライバーによって定義されます)。 |
渡された文字コードに変換するキーが関数で見つからない場合、下位バイトと上位バイトの両方に –1 が含まれます。
備考
入力ロケール識別子は、音声テキスト変換、入力メソッド エディター (IME)、またはその他の形式の入力も含めることができるため、キーボード レイアウトよりも広い概念です。
右側の Alt キーをシフト キー (フランス語のキーボード レイアウトなど) として使用するキーボード レイアウトの場合、右側の Alt キーは内部的に Ctrl + Alt に変換されるため、シフトの状態は値 6 で表されます。
テンキー (VK_NUMPAD0 から VK_DIVIDE) の翻訳は無視されます。 この関数は、メイン キーボード セクションからのみ文字をキーストロークに変換することを目的としています。 たとえば、文字 "7" はVK_NUMPAD7ではなく、VK_7に変換されます。
VkKeyScanEx は、WM_KEYUP および WM_KEYDOWN メッセージを使用して文字を送信するアプリケーションで使用されます。
手記
winuser.h ヘッダーは、UNICODE プリプロセッサ定数の定義に基づいて、この関数の ANSI または Unicode バージョンを自動的に選択するエイリアスとして VkKeyScanEx を定義します。 エンコードに依存しないエイリアスをエンコードに依存しないコードと組み合わせて使用すると、コンパイルエラーやランタイム エラーが発生する不一致が発生する可能性があります。 詳細については、「関数プロトタイプの 規則」を参照してください。
必要条件
要件 | 価値 |
---|---|
サポートされる最小クライアント | Windows 2000 Professional [デスクトップ アプリのみ] |
サポートされる最小サーバー | Windows 2000 Server [デスクトップ アプリのみ] |
ターゲット プラットフォーム の |
ウィンドウズ |
ヘッダー | winuser.h (Windows.h を含む) |
ライブラリ | User32.lib |
DLL | User32.dll |
関連項目
- GetAsyncKeyState の
- GetKeyNameText を
する - GetKeyState を
する - GetKeyboardState を
する - LoadKeyboardLayout
- SetKeyboardState の
- ToAsciiEx を
する - キーボード入力