次の方法で共有


ToUnicodeEx 関数 (winuser.h)

指定した仮想キー コードとキーボードの状態を、対応する Unicode 文字に変換します。

構文

int ToUnicodeEx(
  [in]           UINT       wVirtKey,
  [in]           UINT       wScanCode,
  [in]           const BYTE *lpKeyState,
  [out]          LPWSTR     pwszBuff,
  [in]           int        cchBuff,
  [in]           UINT       wFlags,
  [in, optional] HKL        dwhkl
);

パラメーター

[in] wVirtKey

型: UINT

変換する仮想キー コード。 「Virtual-Key コードの」を参照してください。

[in] wScanCode

型: UINT

ハードウェア は、変換するキーのコード をスキャンします。 キーがアップしている場合、この値の上位ビットが設定されます。

[in] lpKeyState

型: const BYTE*

現在のキーボードの状態を含む 256 バイト配列へのポインター。 配列内の各要素 (バイト) には、1 つのキーの状態が含まれます。

バイトの上位ビットが設定されている場合、キーはダウンします。 低ビット (設定されている場合) は、キーがオンになっていることを示します。 この関数では、CAPS LOCK キーのトグル ビットのみが関連します。 NUM LOCK キーと SCROLL LOCK キーのトグル状態は無視されます。 詳細については、GetKeyboardState の を参照してください。

[out] pwszBuff

型: LPWSTR

UTF-16 コード単位の配列として変換された文字を受け取るバッファー。 変数名が null 終端であることを示している場合でも、このバッファーは null で終わることなく返される場合があります。 このメソッドの戻り値を使用して、書き込まれた文字の数を確認できます。

[in] cchBuff

型: int

pwszBuff パラメーターが指すバッファーのサイズ (文字数)。

[in] wFlags

型: UINT

関数の動作。

ビット 0 が設定されている場合は、メニューがアクティブになります。 このモード Alt + テンキー キーの組み合わせは処理されません。

ビット 1 が設定されている場合、ToUnicodeEx は、キー作成イベントの通常の処理に加えて、キーブレーク イベントとしてマークされたスキャンコードを変換します。

ビット 2 が設定されている場合、キーボードの状態は変更されません (Windows 10 バージョン 1607 以降)

他のすべてのビット (31 まで) は予約されています。

[in, optional] dwhkl

型: HKL

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

戻り値

型: int

この関数は、次のいずれかの値を返します。

戻り値 形容
< 0
指定した仮想キーは、のデッド キー 文字 (アクセントまたは分音記号) です。 この値は、複数の文字が入力され、キーボードの状態で格納されている場合でも、キーボード レイアウトに関係なく返されます。 可能であれば、Unicode キーボード レイアウトでも、この関数は、pwszBuffで指定されたバッファーに配信不能キー文字の間隔バージョン 書き込んでいます。 たとえば、この関数は、文字 COMBINING ACUTE ACCENT (U+0301) ではなく、文字 ACUTE ACCENT (U+00B4) を書き込みます。
0
指定された仮想キーには、キーボードの現在の状態に対する変換がありません。 pwszBuffで指定されたバッファーに何も書き込まれなかった。
> 0
pwszBuffで指定されたバッファーに 1 つ以上の UTF-16 コードユニット 書き込まれた。 pwszBuff 返される戻り値が指定した文字数を超える文字を含む場合があります。 この場合、余分な文字は無効であり、無視する必要があります。

備考

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

一部のキーボード レイアウトでは、pwszBuffで サロゲート ペアとして、いくつかの文字や補助文字 返される場合があります。 キーボード レイアウトに格納されているデッド キー文字 (アクセントまたは分音記号) を指定された仮想キーと組み合わせて 1 文字を形成できなかった場合は、前に入力した配信不能文字を現在の文字と組み合わせることができます。

ToUnicodeEx 関数に指定されたパラメーターは、以前の のデッド キー がキーボード レイアウトに格納されているため、仮想キー コードを変換するには不十分な場合があります。

通常、ToUnicodeEx は、仮想キー コードに基づいて変換を実行します。 ただし、場合によっては、wScanCode パラメーターのビット 15 を使用して、キー押下とキー解放を区別できます (Alt + numpad キー 入力など)。

ToUnicodeEx は仮想キー コードを変換するため、カーネル モードのキーボード バッファーの状態も変更されます。 この状態変更は、デッド キー、合字、alt + テンキー キー入力 などにも影響します。 また、TranslateMessage組み合わせて使用すると、望ましくない副作用が発生する可能性があります (カーネル モードのキーボード バッファーの状態も変更されます)。

必要条件

要件 価値
サポートされる最小クライアント Windows 2000 Professional [デスクトップ アプリのみ]
サポートされる最小サーバー Windows 2000 Server [デスクトップ アプリのみ]
ターゲット プラットフォーム の ウィンドウズ
ヘッダー winuser.h (Windows.h を含む)
ライブラリ User32.lib
DLL User32.dll

関連項目

概念

キーボード入力

LoadKeyboardLayout

リファレンス

ToAsciiEx を する

VkKeyScan の