Laden...

Key abfangen, obwohl die Anwendung nicht den Focus hat [==> Hotkey]

Erstellt von max1761995 vor 10 Jahren Letzter Beitrag vor 10 Jahren 1.797 Views
Thema geschlossen
M
max1761995 Themenstarter:in
23 Beiträge seit 2013
vor 10 Jahren
Key abfangen, obwohl die Anwendung nicht den Focus hat [==> Hotkey]

Hallo zusammen

Ich möchte eine Konsolen Anwendung schreiben. Es geht darum, falls jemand bestimmte Wörter oder Tastenkombinationen schreibt. Sollen gewisse sachen passieren.

So zu sagen läuft diese Anwendung im Hintergrund und sobald man schreib "$wannasendmail" soll sich zum Beispiel Outlook öffnen.

Eigentlich ist sind es Shortcuts so wie Ctrl + C etc.

Jedoch funktioniert es nur, falls ich auf die Konsole klicke.

Wie kann ich die Tasten auch abfangen falls ich es eingebe, während ich den Chrome Browser Benutze?

Mfg max

1.696 Beiträge seit 2006
vor 10 Jahren

Hallo,

via WInAPI kannst du sowas realisieren. Stichwort für Suche sind z.B. Keyboardhook, Hotkey, etc.

Wenn du aber in der Firmaeinsetzt, dann kann es u.U. nur mit Genehmigung von Betriebsrat möglich sein, da du mit dem Programm praktisch ein Keylogger betreibst.

Grüße

Ich bin verantwortlich für das, was ich sage, nicht für das, was du verstehst.

**:::

W
955 Beiträge seit 2010
vor 10 Jahren

Willste nicht lieber Autohotkey verwenden?

U
189 Beiträge seit 2011
vor 10 Jahren

Hotkey-Klasse aus dem Forum:
Hotkey-Klasse

M
max1761995 Themenstarter:in
23 Beiträge seit 2013
vor 10 Jahren

Danke für die Antworten. Wenn ich Hotkeys aufrufen will, muss dies ja in einer Methode stehen, die immer aufgeruft wird, wie geht das ?

1.696 Beiträge seit 2006
vor 10 Jahren

Ähm ... wie meinst du das? Von welchen Hotkeys sprichst du? Code-Ausschnitt?

Grüße

Ich bin verantwortlich für das, was ich sage, nicht für das, was du verstehst.

**:::

2.078 Beiträge seit 2012
vor 10 Jahren

Ich glaub, er versteht nicht, wie man ein Event nutzt.

Hier gibt es eine Erklärung:

Events Tutorial

49.485 Beiträge seit 2005
vor 10 Jahren

Hallo max1761995,

in einer reinen Konsolenanwendung geht das nicht. Deine Anwendung muss eine laufende Nachrichtenschleife besitzen, damit das Event ausgelöst wird. Eine Nachrichtenschleife startet man mit Application.Run.

Da in einer Konsolenanwendung der Haupt-Thread üblicherweise mit der Abarbeitung des eigentlichen Codes der Konsolenanwendung beschäftigt ist, kann man das Application.Run auch in einem extra Thread starten, muss dann aber alle Controls auch von diesem Thread aus erzeugen, siehe [FAQ] Controls von Thread aktualisieren lassen (Control.Invoke/Dispatcher.Invoke).

Man muss sich also mit den Grundlagen der Windows-Forms-Anwendungen auskennen, um das richtig zu machen. Wissen über Konsolenanwendungen alleine reicht hier nicht. Die nötigen Grundlagen der Windows-Forms-Programmierung setzen wir als bekannt voraus, siehe [Hinweis] Wie poste ich richtig? Punkt 1.1.1.

Auch sonst muss man natürlich aufpassen, dass man sich durch das Multi-Threading keine Probleme einhandelt.

Übersetzen kannst du deinen Anwendung weiterhin als Konsolenanwendung.

herbivore

Thema geschlossen