Laden...

Benutzereingabe in WindowsService abfragen

Erstellt von Paschulke vor 13 Jahren Letzter Beitrag vor 13 Jahren 1.770 Views
P
Paschulke Themenstarter:in
69 Beiträge seit 2011
vor 13 Jahren
Benutzereingabe in WindowsService abfragen

Hallo,

ich möchte einen kleinen Service schreiben, der die Zeit protokolliert, die ich tatsächlich arbeite.
Ich stelle mir das so vor, dass der Service die Zeit stoppt, wenn ich eine bestimmte Zeit (z.B. 5 Min.) keine Tastatur- oder Mauseingabe tätige. Wenn ich wieder etwas mache, wird weiter gezählt.
Das müsste also ähnlich funktionieren, wie der Windows-Dienst, der den Bildschimschoner nach einer gewissen Inaktivitätszeit startet.

Wie kann ich da vorgehen? Alles googeln hat mich bisher nur zu Events gebracht, die man aus einem Fenster abfangen kann...

1.002 Beiträge seit 2007
vor 13 Jahren

Hallo Paschulke,

verwende Global Hooks, um systemweite Benutzereingaben abzufangen.

m0rius

Mein Blog: blog.mariusschulz.com
Hochwertige Malerarbeiten in Magdeburg und Umgebung: M'Decor, Ihr Maler für Magdeburg

771 Beiträge seit 2009
vor 13 Jahren

Hi,

dann benutze dafür die GetLastInputInfo-Funktion.
Und hier der Link für die Umsetzung mittels P/Invoke: http://pinvoke.net/default.aspx/user32/GetLastInputInfo.html

49.485 Beiträge seit 2005
vor 13 Jahren

Hallo Paschulke,

ein Dienst ist nicht das richtige für diesen Anwendungsfall. Dienste sind nicht dafür gemacht, auf Benutzereingaben zu reagieren. Schreib ein normales Programm, z.B. eins mit NotifyIcon.

herbivore

P
Paschulke Themenstarter:in
69 Beiträge seit 2011
vor 13 Jahren

Super, Danke Euch! Das funktioniert prima 😃

Eine Frage noch: Gibt es auch ein Event, dass man abfangen kann? Oder muss ich einen Timer verwenden? Damit hatte ich es gerade im ersten Ansatz versucht. Hat zwar gut funktioniert, aber ich frage mich, ob es nicht eleganter geht.

49.485 Beiträge seit 2005
vor 13 Jahren

Hallo Paschulke,

um einen eigenen Timer wird man kaum herumkommen. Daran ist auch nichts schlimmes.

herbivore

P
Paschulke Themenstarter:in
69 Beiträge seit 2011
vor 13 Jahren

Alles klar. Danke!