Verwenden von SendInput zum Senden von Unicode-Zeichen über U + FFFF hinaus

9

Ich schreibe eine Bildschirmtastatur ähnlich der in Windows 8. Ich habe kein Problem damit, die meisten Zeichen zu senden, die ich mit dem SendInput von Win32 brauche.

Das Problem ist, wenn es um die neuen Windows 8 Emojis geht. Sie beginnen bei U + 1F600 mit der Schriftart Segoe UI Symbol.

Unter Verwendung von Spy ++ auf der Windows 8-Bildschirmtastatur erhalte ich die folgende Ausgabe für alle Emoji-Glyphen.

%Vor%

Da sie alle die gleiche Ausgabe erzeugen, kann ich nicht sehen, was gesendet wird, das die eindeutige Glyphe tatsächlich identifiziert.

Ich bin mir bewusst, dass SendInput einen KEYEVENTF_UNICODE-Parameter zum Senden von Unicode-Zeichen hat. Aber diese Charaktere scheinen in einer Art erweiterter Unicode-Seite zu sein. Über den 16-Bit-Unicode-Bereich hinaus (U + 0000 bis U + FFFF) kann ein C # -Char oder der kurze WScan-Wert in der INPUT-Struktur darstellen.

Hier ist meine SendCharUnicode-Methode.

%Vor%

Wie kann ich diese Methode ändern, um erfolgreich ein Unicode-Zeichen wie

headkaze 10.03.2014, 02:46
quelle

1 Antwort

4

Ich habe den API-Monitor auf der Windows 8-Bildschirmtastatur verwendet, und er verwendet tatsächlich SendInput. Nach weiteren Untersuchungen habe ich festgestellt, dass Sie das UTF-32-Unicode-Zeichen in sein UTF-16-Ersatzpaar Eg zerlegen müssen.

headkaze 10.03.2014, 18:48
quelle

Tags und Links