Globale Shortcuts

danielm

Erfahrenes Mitglied
Hallo,
also ich suche nach einer Möglichkeit wie ich gobal in meinem Programm, egal auf welcher Form oder welches Objekt gerade angewählt ist, Shortcuts einbauen kann. Also das wenn ich z.B. F1 drücke das dann Form2 geöffnet wird... usw

Hat da einer ne Idee wie ich das machen kann?

mfg daniel
 
Hallo

Wie wäre es, wenn Du auf dein Startup-Objekt einen Timer setzt, der dann mit GetAsyncKeyState etwa alle 100 Milisekunden die Tastatur pollt (ja, ich weiß, das ist nicht die feine englische...) und somit auf jeden Fall mitbekommt, welche Taste gedrückt wurde. :-)

Ein weiterer Ansatz ist alle Forms mit KeyPreview = True auszustatten und dann den KeyPress- bzw. KeyDown-Event an einen zentralen Handler weiter zu reichen. ;-)

Und es gibt natürlich auch noch die Variante via Subclassing ( :eek: ) dafür zu sorgen, daß Du alle Tastaturevents (egal wo innerhalb Windows) als Event in deine Form geliefert bekommst. Das dürfte aber mit Abstand der aufwändigste Weg sein, wenn man nicht gerade Copy and Paste - Programmierung betreibt :rolleyes:

Genug Ideen? ;-] Yves
 
Hi,

Timer gehen auf die Systemperformance und sollten daher soweit wie möglich vermieden werden.
Das mit dem KeyPreview wird zwar vermutlich funktionieren, ist aber wahrscheinlich nicht besonders pflegeleicht, wenn man später mal Formulare hinzufügen oder anpassen muss. Erst recht nicht, wenn irgendjemand das Programm testet und nicht weiss, dass die KeyPreview-Eigenschaft in allen Formularen verändert wurde. Nach solchen Dingen kann man oft ganz schön verzweifeln. ;)

Die idealste Lösung wären meiner Meinung nach die ebenfalls schon erwähnten systemweiten Tastaturhooks. Allerdings solltest Du dann in der Behandlungsmethode noch überprüfen, von welchem Programm der Hook gesendet wurde. Mag sein, dass das für Deinen Zweck vielleicht etwas übertrieben ist, aber ist sicher gut zu wissen, wie man sowas macht. :)

Gruss, Dario
 

Neue Beiträge

Zurück