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 が含まれます。

注釈

入力ロケール識別子は、音声テキスト変換コンバーター、Input Method エディター (IME)、またはその他の形式の入力も含めることができるため、キーボード レイアウトよりも広範な概念です。

右側の Alt キーをシフト キーとして使用するキーボード レイアウト (たとえば、フランス語のキーボード レイアウト) の場合、右側の Alt キーは内部的に Ctrl + Alt に変換されるため、シフトの状態は値 6 で表されます。

テンキーの翻訳 (VK_NUMPAD0からVK_DIVIDE) は無視されます。 この関数は、メイン キーボード セクションからのみ文字をキーストロークに変換することを目的としています。 たとえば、文字 "7" はVK_NUMPAD7ではなくVK_7に変換されます。

VkKeyScanEx は、 メッセージのWM_KEYUPWM_KEYDOWN を使用して文字を送信するアプリケーションで使用されます。

注意

winuser.h ヘッダーは、UNICODE プリプロセッサ定数の定義に基づいて、この関数の ANSI または Unicode バージョンを自動的に選択するエイリアスとして VkKeyScanEx を定義します。 エンコードに依存しないエイリアスをエンコードニュートラルでないコードと組み合わせて使用すると、コンパイルまたはランタイム エラーが発生する不一致が発生する可能性があります。 詳細については、「 関数プロトタイプの規則」を参照してください。

要件

要件
サポートされている最小のクライアント Windows 2000 Professional [デスクトップ アプリのみ]
サポートされている最小のサーバー Windows 2000 Server [デスクトップ アプリのみ]
対象プラットフォーム Windows
ヘッダー winuser.h (Windows.h を含む)
Library User32.lib
[DLL] User32.dll

こちらもご覧ください