Einzelnen Beitrag anzeigen

Boris

Registriert seit: 8. Sep 2003
1 Beiträge
 
#1

Tastaturlayout systemweit ändern ohne Neustart

  Alt 8. Sep 2003, 14:57
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]
  Mit Zitat antworten Zitat