![]() |
ToUnicodeEx - "fremdes" Tastaturlayout
Hallo,
Der Titel ist schwer zu beschreiben und ist daher nicht zu 100% aussagekräftig :/ Es geht darum dass ich Scancode + VKey mit ToUnicodeEx in ein Zeichen umwandle. Über den letzten Parameter gebe ich den "input locale identifier" (Tastaturlayout) des gewünschten Landes an. Das funktioniert soweit auch recht gut. Allerdings funktioniert es z.T. nicht wenn ich den übergebenen ILI nicht zu den Eingabesprache in Windows hinzugefügt habe. Füge ich die Sprache hinzu (Bulgarisch z.B.) dann funktioniert es. Danach kann ich die Eingabesprache auch direkt wieder rausschmeißen und es funktioniert immernoch - bis es dann irgendwann nicht mehr funktioniert. Alles etwas seltsam. Ich hoffe das klingt nicht zu verwirrend. Hier ist etwas Beispielcode:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
const ScanCodeTasteA = 30; ILI_Bulgarien = $F0AA0402; // Herausgefunden per GetKeyboardLayout bei aktivem Bulg. Tastaturlayout var vkey: Cardinal; kbState: Array[0..255] of Byte; buff: WideChar; begin FillChar(kbState[0], SizeOf(kbState), 0); vkey := MapVirtualKeyEx(ScanCodeTasteA, MAPVK_VSC_TO_VK, ILI_Bulgarien); ToUnicodeEx(vkey, ScanCodeTasteA, @kbState[0], @buff, 1, 0, ILI_Bulgarien); Caption := Buff; end; |
AW: ToUnicodeEx - "fremdes" Tastaturlayout
Okay hat sich erledigt.
Man kann/sollte nicht den ILI direkt angeben sondern diesen über LoadKeyboardLayout laden/abfragen. Dann funktioniert es zuverlässig, selbst wenn die Sprache in Windows nicht als Eingabesprache definiert ist. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:56 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz