Entwickler-Ecke

Windows API - Auf "Strg" + "Buchstabe" reagieren


StrikeLucky - Fr 04.06.10 18:12
Titel: Auf "Strg" + "Buchstabe" reagieren
Moin Moin,

also ich möchte gerne das mein Programm auf "Strg" + "s" reagieren kann.
Wenn das Programm im Vordergrund ist, soll auf die Tastenkombination entsprechend reagiert werden.
Allerdings soll das nur funktionieren wenn das Programm im Vordergrund ist, sollte ein anderes Programm im Vordergrund sein, soll der Tastendruck von mein Programm ignoriert werden.

(In Firefox gibts auch sowas, einfach "Strg" und "d" drücken. Funktioniert auch nur wenn das Fenster im Vordergrund ist)

Ich hoffe jemand kann mir etwas helfen.

LG


Bergmann89 - Fr 04.06.10 18:22

5 sec Sucharbeit bei Google [http://www.delphi-library.de/topic_einen+Hotkey+global+verarbeiten_19371,0.html]


StrikeLucky - Fr 04.06.10 18:25

Aber genau das habe ich nicht gesucht, denn das funktioniert auch wenn die Anwendung inaktiv ist.


Bergmann89 - Fr 04.06.10 18:29

Sry, hab ich überlesen^^ Dann guck dir ma THotKey an. da weiß ich aber auch grad nich, ob du nur im aktiven Progg arbeitet...
€: Die 1. Methode geht aber auch, prüf einfach vorher ob die Anwendung aktiv ist: Application.Active


jaenicke - Fr 04.06.10 18:37

Die einfachste Lösung ist einfach im Hauptmenü des Programms dem entsprechenden Menüeintrag den Shortcut zuzuordnen.

// EDIT:
user profile iconBergmann89 hat folgendes geschrieben Zum zitierten Posting springen:
€: Die 1. Methode geht aber auch, prüf einfach vorher ob die Anwendung aktiv ist: Application.Active
Das setzt aber auch die Shortcuts und Tasten in anderen Programmen außer Gefecht. Ob du den Hotkey dann tatsächlich nutzt oder nicht ist dabei irrelevant.


StrikeLucky - Fr 04.06.10 19:21

user profile iconBergmann89 hat folgendes geschrieben Zum zitierten Posting springen:
Sry, hab ich überlesen^^ Dann guck dir ma THotKey an. da weiß ich aber auch grad nich, ob du nur im aktiven Progg arbeitet...
€: Die 1. Methode geht aber auch, prüf einfach vorher ob die Anwendung aktiv ist: Application.Active

Hehe ist ja nicht schlimm, hast es ja gut gemeint.
Danke ich werde mir mal THotKey ansehen.

user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
Die einfachste Lösung ist einfach im Hauptmenü des Programms dem entsprechenden Menüeintrag den Shortcut zuzuordnen.

Wie genau meinst du das?


jaenicke - Fr 04.06.10 19:24

Nun, wenn du z.B. den Menüeintrag Datei --> Drucken hast, dann kannst du dort den Shortcut Strg + P setzen und schon genügt die Tastenkombination um diesen Befehl auszulösen. ;-)


StrikeLucky - Fr 04.06.10 19:29

Ah ok das funktioniert, da haste Recht:)
Aber wie mache ich das wenn ich kein Menü habe?


Delete - Fr 04.06.10 19:37

Die Ereignisse OnKeyDown oder OnKeyPress des Formulares auswerten.


jaenicke - Fr 04.06.10 19:38

Und KeyPreview des Formulars auf True setzen, damit die Tastendrücke auch immer ankommen.


ffgorcky - Sa 05.06.10 09:26

Wenn Du nur kein Menü anzeigen lassen möchtest, dann kannst Du ja die Menü-Einträge alle auf visible:=false setzen und es geht trotzdem.


Hidden - Sa 05.06.10 10:42

Hi :)

user profile iconffgorcky hat folgendes geschrieben Zum zitierten Posting springen:
Wenn Du nur kein Menü anzeigen lassen möchtest, dann kannst Du ja die Menü-Einträge alle auf visible:=false setzen und es geht trotzdem.
Nah, ich krieg' immer ein :hair:, wenn ich von unsichtbaren TMemos, TImages oder auch TMainMenus höre ;) Das sind visuelle Komponenten, die eine einfachere und zu bevorzugende Klasse oder Funktion kapseln: TStringList, TBitmap, OnKeyDown, ..

user profile iconLuckie hat folgendes geschrieben Zum zitierten Posting springen:
Die Ereignisse OnKeyDown oder OnKeyPress des Formulares auswerten.
Das ist die einzig richtige Lösung. THotKey geht glaube ich auch, ist aber darauf ausgelegt, vom User noch bei Bedarf umbelegt zu werden. [Strg][s] sollte aber immer gleich bleiben.

lg,

E:
user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
Und KeyPreview des Formulars auf True setzen, damit die Tastendrücke auch immer ankommen.
Zu beachten. :idea:


Delete - Sa 05.06.10 10:44

user profile iconHidden hat folgendes geschrieben Zum zitierten Posting springen:
user profile iconLuckie hat folgendes geschrieben Zum zitierten Posting springen:
Die Ereignisse OnKeyDown oder OnKeyPress des Formulares auswerten.
Das ist die einzig richtige Lösung.

Danke. Schön, dass du das auch so siehst.