ToUnicode-Funktion (winuser.h)
Übersetzt den angegebenen virtuellen Tastencode und den Tastaturzustand in die entsprechenden Unicode-Zeichen
Syntax
int ToUnicode(
[in] UINT wVirtKey,
[in] UINT wScanCode,
[in, optional] const BYTE *lpKeyState,
[out] LPWSTR pwszBuff,
[in] int cchBuff,
[in] UINT wFlags
);
Parameter
[in] wVirtKey
Typ: UINT
Der zu übersetzende Code des virtuellen Schlüssels. Weitere Informationen finden Sie unter Virtuelle Tastencodes.
[in] wScanCode
Typ: UINT
Der Hardwarescancode des zu übersetzenden Schlüssels. Das Bit mit hoher Reihenfolge dieses Werts wird festgelegt, wenn der Schlüssel aktiv ist.
[in, optional] lpKeyState
Typ: const BYTE*
Ein Zeiger auf ein 256-Byte-Array, das den aktuellen Tastaturzustand enthält. Jedes Element (Byte) im Array enthält den Zustand eines Schlüssels.
Wenn das Bit in hoher Reihenfolge eines Byte festgelegt ist, ist der Schlüssel ausgefallen. Das niedrige Bit, sofern festgelegt, gibt an, dass der Schlüssel aktiviert ist. In dieser Funktion ist nur das Umschaltbit der CAPS-TASTE relevant. Der Umschaltzustand der TASTEN NUM-TASTE und SCROLL-TASTE wird ignoriert. Weitere Informationen finden Sie unter GetKeyboardState .
[out] pwszBuff
Typ: LPWSTR
Der Puffer, der das übersetzte Zeichen oder die übersetzten Zeichen als Array von UTF-16-Codeeinheiten empfängt. Dieser Puffer kann zurückgegeben werden, ohne null-terminiert zu sein, obwohl der Variablenname darauf hindeutet, dass er null-terminated ist. Sie können den Rückgabewert dieser Methode verwenden, um zu bestimmen, wie viele Zeichen geschrieben wurden.
[in] cchBuff
Typ: int
Die Größe des Puffers in Zeichen, auf den der parameter pwszBuff verweist.
[in] wFlags
Typ: UINT
Das Verhalten der Funktion.
Wenn Bit 0 festgelegt ist, ist ein Menü aktiv. In diesem Modus werden Alt+Numerische Tastenkombinationen nicht behandelt.
Wenn Bit 2 festgelegt ist, wird der Tastaturzustand nicht geändert (Windows 10, Version 1607 und höher)
Alle anderen Bits (bis 31) sind reserviert.
Rückgabewert
Typ: int
Die Funktion gibt einen der folgenden Werte zurück.
Rückgabewert | BESCHREIBUNG |
---|---|
|
Der angegebene virtuelle Schlüssel ist ein unzustellbares Schlüsselzeichen (Akzent oder diakritische Zeichen). Dieser Wert wird unabhängig vom Tastaturlayout zurückgegeben, auch wenn mehrere Zeichen eingegeben wurden und im Tastaturzustand gespeichert sind. Wenn möglich, hat die Funktion auch bei Unicode-Tastaturlayouts einen Abstand des Unzustellbaren Zeichens in den von pwszBuff angegebenen Puffer geschrieben. Beispielsweise schreibt die Funktion das Zeichen ACUTE ACCENT (U+00B4) und nicht das Zeichen COMBINING ACUTE ACCENT (U+0301). |
|
Die angegebene virtuelle Taste verfügt über keine Übersetzung für den aktuellen Zustand der Tastatur. Es wurde nichts in den von pwszBuff angegebenen Puffer geschrieben. |
|
Mindestens eine UTF-16-Codeeinheit wurde in den von pwszBuff angegebenen Puffer geschrieben. Zurückgegebenes pwszBuff kann mehr Zeichen enthalten, als der Rückgabewert angibt. In diesem Fall sind alle zusätzlichen Zeichen ungültig und sollten ignoriert werden. |
Hinweise
Verwenden Sie die ToUnicodeEx-Funktion, um ein Handle für das Tastaturlayout anzugeben, das zum Übersetzen des angegebenen Codes verwendet werden soll.
Einige Tastaturlayouts geben möglicherweise mehrere Zeichen und/oder ergänzende Zeichen als Ersatzpaare in pwszBuff zurück. Wenn ein im Tastaturlayout gespeichertes Unzustellbares Zeichen (Akzent oder diakritisches Zeichen) nicht mit der angegebenen virtuellen Taste kombiniert werden konnte, um ein einzelnes Zeichen zu bilden, kann das zuvor eingegebene unzustellbare Zeichen mit dem aktuellen Zeichen kombiniert werden.
Die Parameter, die für die ToUnicodeEx-Funktion bereitgestellt werden, reichen möglicherweise nicht aus, um den Code für virtuelle Schlüssel zu übersetzen, da eine vorherige unzustellbare Taste im Tastaturlayout gespeichert ist.
In der Regel führt ToUnicode die Übersetzung basierend auf dem Code des virtuellen Schlüssels durch. In einigen Fällen kann jedoch Bit 15 des wScanCode-Parameters verwendet werden, um zwischen einem Tastendruck und einem Tastenauslöser zu unterscheiden (z. B. für ALT+Numpad-Tasteneingabe).
Da ToUnicode den Code für virtuelle Schlüssel übersetzt, ändert es auch den Zustand des Kernelmodus-Tastaturpuffers. Diese Zustandsänderung wirkt sich auf tote Tasten, Ligaturen, ALT+Numerische Tastaturtasteneingabe usw. aus. Es kann auch unerwünschte Nebenwirkungen verursachen, wenn es in Verbindung mit TranslateMessage verwendet wird (was auch den Zustand des Kernelmodus-Tastaturpuffers ändert).
Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) | Windows 2000 Professional [nur Desktop-Apps] |
Unterstützte Mindestversion (Server) | Windows 2000 Server [nur Desktop-Apps] |
Zielplattform | Windows |
Kopfzeile | winuser.h (windows.h einschließen) |
Bibliothek | User32.lib |
DLL | User32.dll |
Siehe auch
Konzept
Referenz