Entwickler-Ecke

Basistechnologien - HotKeys


Creedy - Fr 23.07.10 10:20
Titel: HotKeys
Gibt es in C# die möglichkeit Hotkeys zu definieren damit vom mir definierte aktionen (Methoden/Funktionen) ausgeführt werden auch wen sich die Form nicht im Vordergrund befindet aber gestartet ist. Würde in mein Programm gern sowas einbauen ähnlich wie in z.b. Winamp , dass man festlegt Strg+Alt+P betätigt den Play/Pause Button auch wen man sich gerade in einer anderen Anwendung(Spiel,Browser usw) befindet.

Wen die Möglichkeit nicht direkt besteht kann man sowas über C/C++ einbinden ?

Wäre mir nett wen mir da jemand helfen könnten, vor allem weil ich in C/C++ auch nicht so fitt bin, wen C# direkt so eine Möglichkeit anbietet wäre dies natürlich praktischer.


Vielen Dank schonmal ;-)


Moderiert von user profile iconChristian S.: Topic aus C# - Die Sprache verschoben am Fr 23.07.2010 um 17:08


bakachan - Fr 23.07.10 10:27

Wenn ich mich gerade nicht täusche dürfte in C# nur der Tastendruck erkannt werden wenn dein Programm im Fokus ist.
Ansonsten wären es Globale Hotkeys.
(Wenn du bei google mal nach "c# global hotkey" suchst findest du genug dazu)


ThoMa - Fr 23.07.10 15:42

Hallo,

eigentlich ändert sich unter C# an der Stelle nicht viel gegenüber den anderen nicht-.NET-Ansätzen. Aus C# mag es ungewohnt sein mit der Win32API umzugehen, was Du hier tun musst um einen sogenannten MessageHook zu registieren.

Du musst Dir klar darüber werden wie Nachrichten (dazu gehören auch Tastatur- und Mausereignisse) unter Windows verarbeitet werden. Vereinfacht ausgedrückt kommen die in eine Warteschlange und werden so lange nach unten gereicht bis irgendwas damit anfangen konnte. Es gibt nun die Möglichkeit sich in diese Warteschlange einzuhängen.

Hier gibt es eine fertige Lösung:
http://www.codeproject.com/KB/cs/globalhook.aspx

Grüße
ThoMa


Th69 - Fr 23.07.10 15:48

Hier noch ein anderer Link zu einer Hotkey-Klasse: http://www.mycsharp.de/wbb2/thread.php?threadid=65760

Und "ErfinderDesRades" hat noch einen einfacheren Weg (mittels RegisterHotKey) in C# implementiert:
http://www.mycsharp.de/wbb2/thread.php?postid=341963#post341963


Creedy - Di 27.07.10 13:53

Danke euch vielmals , sieht sehr vielversprechend aus . Werde am Wochenende mal schauen wie ich das am besten einbauen kann.