Einzelnen Beitrag anzeigen

Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.192 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#1

ToUnicodeEx - "fremdes" Tastaturlayout

  Alt 21. Okt 2015, 13:23
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;
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat