ToUnicode 関数 (winuser.h)

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

構文

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

パラメーター

[in] wVirtKey

型: UINT

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

[in] wScanCode

型: UINT

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

[in, optional] 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 + テンキー キーの組み合わせは処理されません。

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

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

戻り値

型: int

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

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

注釈

指定したコードの変換に使用するキーボード レイアウトのハンドルを指定するには、ToUnicodeEx 関数を使用します。

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

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

通常、 ToUnicode は仮想キー コードに基づいて変換を実行します。 ただし、場合によっては、 wScanCode パラメーターのビット 15 を使用して、キーの押下とキーリリースを区別できます (たとえば、Alt + numpad キーエントリの場合)。

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

要件

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

関連項目

概念

キーボード入力

リファレンス

ToAscii

ToUnicodeEx

VkKeyScan