次の方法で共有


VkKeyScanExA 関数 (winuser.h)

文字を対応する仮想キー コードとシフト状態に変換します。 この関数は、入力ロケール識別子によって識別される入力言語と物理キーボード レイアウトを使用して文字を変換します。

構文

SHORT VkKeyScanExA(
  [in] CHAR ch,
  [in] HKL  dwhkl
);

パラメーター

[in] ch

型: TCHAR

仮想キー コードに変換される文字。

[in] dwhkl

型: HKL

文字の変換に使用される入力ロケール識別子。 このパラメーターには、LoadKeyboardLayout 関数によって以前に返された任意の入力ロケール識別子を指定できます。

戻り値

型: SHORT

関数が成功した場合、戻り値の下位バイトには仮想キー コードが含まれ、上位バイトにはシフト状態が含まれます。これは、次のフラグ ビットの組み合わせにすることができます。

戻り値 形容
1
いずれかの Shift キーが押されます。
2
Ctrl キーを押します。
4
Alt キーを押します。
8
半角キーを押す
16
予約済み (キーボード レイアウト ドライバーによって定義されます)。
32
予約済み (キーボード レイアウト ドライバーによって定義されます)。
 

渡された文字コードに変換するキーが関数で見つからない場合、下位バイトと上位バイトの両方に –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

関連項目