Entwickler-Ecke

Windows API - Tastenkombination angeben und darauf reagieren...


mtin - Mo 28.11.05 20:42
Titel: Tastenkombination angeben und darauf reagieren...
ich hab ein Programm geschrieben, welches 2 hotkeys registriert und dann bei dem einen einen screenshot macht und bei dem anderen diesen screenshot auch noch auf einen Server hochläd. Dies habe ich so gelöst:


Delphi-Quelltext
1:
2:
3:
//eben ein Auswahlmenü mit 8 Einträgen von F1 bis F8
//wenn man dann z.b. F8 auswählt:
RegisterHotKey(Form1.Handle,id_screenshot,0,VK_F8);

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
//und dann das um die Aufzufangen:
procedure TForm1.WMHotKey(var Msg : TWMHotKey);
begin
 if Msg.HotKey=id_uploadshot then blablabla
 if Msg.HotKey=id_screenshot then lalalalaaa
end;

allerdings ist das nicht so das wahre, und um den hotkey zu speichern hab ich dann einfach nen string mit dem Namen der Taste gespeichert und dann beim Programmstart nen haufen if-Abfragen um wieder den richtigen hotkey zu registrieren...


Jetzt würde ich das gern irgendwie so lösen, dass der User eine beliebige 2-Tasten-Kombination eingeben kann! Also z.b. nen Button und nachdem man da drauf geklickt hat drückt man ALT+S und dann wird ein Hotkey für ALT+S registriert (was ich auch schon nich weiß(wie man Tastenkombinationen registriert)). Und dann müsste diese Kombination auch noch irgendwie so gespeichert werden, dass man die beim nächsten Programmstart wiederherstellen kann...weil mit if-Abfragen komm ich dann nich mehr weit ;)

hoffentlich kann mir da jemand helfen!


digi_c - Di 29.11.05 08:57

In der Komponentenpallete "Win32" gibt es ein Controll namens THotkey das erstmal die Eingabesachen für dich managed.
Dessen TShortcut kannst du ja dann fortlaufend in der Registry speichern und beim Programmstart eine Schleife diese durchgehen lassen und registrieren.


Martin1966 - Di 29.11.05 10:36

Ab welcher Delphi-Version gibt es diese THotKey Komponente?


jaenicke - Di 29.11.05 10:38

Da du Delphi 7 in deinem Profil stehen hast, hast du die Komponente. Die ist wohl erst ab Delphi 6 verfügbar, ich kann mich jedenfalls bei Delphi 5 nicht daran erinnern.


digi_c - Di 29.11.05 10:50

Die gehört doch zu den WinControls, daher meine ich, dass die eigentlich schon immer da war :-/


mtin - Di 29.11.05 16:39

ok, danke, das war echt GENAU was ich gesucht habe!!

allerdings...wie registrier ich jetzt die Tastenkombination als Hotkey und wie speicher ich den Hotkey??

also so klappt das zwar wenn ich nur eine Taste in das THotKey-Feld eintrage, bei einer Kombination geht es aber nicht mehr:


Delphi-Quelltext
1:
RegisterHotKey(Form1.Handle,id_screenshot,0,HotKey1.HotKey);                    


und zum speichern bzw. laden beim Programmstart hab ich auch keine Idee!!!
(hab alle anderen Einstellungen in ner .ini, wär schön wenn das da auch irgendwie speicherbar wäre!!!)