Hallo,
ich möchte unter Windows XP (bzw.
PE) aus meinem Programm heraus von der deutschen auf die amerikanische Tastatur umschalten.
Mit dem
API-Befehl SystemParametersInfo sollte das eigentlich möglich sein, folgenden Code habe ich geschrieben:
Delphi-Quellcode:
procedure TPEConfigForm.Button1Click(Sender: TObject);
var Tastatur_HKL: HKL;
LW, HW: Word;
begin
if not SystemParametersInfo(SPI_GETDEFAULTINPUTLANG, 0, @Tastatur_HKL, SPIF_SENDCHANGE)
then Application.MessageBox(PChar('
No query possible'), '
ERROR', 0);
LW := StrToInt('
$' + '
00000409');
{HexCode für US-Tastatur, als Integer 1033}
HW := HiWord(Tastatur_HKL);
Tastatur_HKL := MakeLong(LW, HW);
if not SystemParametersInfo(SPI_SETDEFAULTINPUTLANG, 0, @Tastatur_HKL, SPIF_UPDATEINIFILE
or SPIF_SENDCHANGE)
then Application.MessageBox(PChar('
No changes possible'), '
ERROR', 0);
end;
Bei der Abfrage der Keyboardinformationen bekomme ich das aktuelle Keyboardlayout zurück (1031 bzw. 0x407), das Einstellen funktioniert jedoch leider nicht (Fehlermeldung 'No changes possible').
Hat jemand eine Idee, wie es funktionieren könnte?
Vielen Dank,
Boris
[edit=Luckie] Mfg, Luckie[/edit]