次の方法で共有


VkKeyScanExW 関数 (winuser.h)

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

構文

SHORT VkKeyScanExW(
  [in] WCHAR 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 を定義します。 encoding-neutral エイリアスの使用を encoding-neutral ではないコードと混在すると、コンパイル エラーまたはランタイム エラーが発生する不一致が発生する可能性があります。 詳細については、「 関数プロトタイプの規則」を参照してください。

要件

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

こちらもご覧ください