Entwickler-Ecke

Windows API - Hotkey aus Ini laden/registrieren


Thomas233 - So 18.05.03 19:14
Titel: Hotkey aus Ini laden/registrieren
Hallo,

ich habe ein Programm geschrieben das Hotkeys benutzt. Die Hotkeys werden mit Suche in: Delphi-Forum, Delphi-Library REGISTERHOTKEY und Suche in: Delphi-Forum, Delphi-Library UNREGISTERHOTKEY aus der Windows-Api registriert/entfernt. Das Auswerten beim Klick eines Hotkeys wird auch behandelt.

Das Problem besteht darin das ich will das sich der Benutzer den Hotkey aussucht, mit dem er das Programm öffnet. Daher habe ich ein Textfeld gemacht in dem man den Buchstaben definieren kann. Als Kombination wird dann STRG+Buchstabe verwendet.

Der Buchstabe den der Benutzer dann eingibt wird in eine Ini-Datei mit "WriteString" geschrieben (Uppercase inklusive). Das Programm lädt den Buchstaben dann aus der Ini und soll den Hotkey registrieren:

Delphi-Quelltext
1:
RegisterHotKey(Form.Handle,id1,0, Ini.Readstring('Section','Buchstabe','R'));                    

Da ich den letzten Parameter, der ein "virtual key" sein muss, aber weder mit "Ini.Readsting(...)", noch mit "Ord(Ini.Readstring(...))" einbetten kann funktioniert das nicht. Auch mit einer Variable als Shortcut funktioniert das nicht.

Kann jemand helfen, weiss jemand eine Lösung? Ich bitte sehr darum da mein Prog dann fertig ist.


bis11 - So 18.05.03 21:22

Du setzt ja im Moment so den Hotkey fest :


Delphi-Quelltext
1:
2:
  id1:=GlobalAddAtom('Hotkey1');
  RegisterHotKey(handle,id1,MOD_CONTROL,VK_B);


Jetzt musst Du Dir überlegen, wie Du es machst. Da ja VK_B dem ASCII-code 66 entspricht, musst Du entweder bei Schreiben in die INI den Wert setzen oder den eingegeben Buchstaben in die INI schreiben. Du musst auf jeden Fall so oder so umwandeln.


Delete - Mo 19.05.03 11:58

Es ginge auch noch so:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
var
  ch : string[1];
begin
  { ... }
  ch := Ini.ReadString('Section','Buchstabe','R');

  RegisterHotKey(Form.Handle,
    id1,
    0,
    word(ch[1]));
  { ... }
end;

Es dürfen also weiterhin die Buchstaben in der INI gespeichert werden, und man überlässt Delphi das Umwandeln (casten) des Wertes.


Thomas233 - Mo 02.06.03 18:47

Vielen Dank, das zweite hat geholfen :D