Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Benutzereingabe in WindowsService abfragen
Paschulke
myCSharp.de - Member



Dabei seit:
Beiträge: 63

Themenstarter:

Benutzereingabe in WindowsService abfragen

beantworten | zitieren | melden

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...
private Nachricht | Beiträge des Benutzers
m0rius
myCSharp.de - Member

Avatar #avatar-3125.png


Dabei seit:
Beiträge: 1043

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
Cat
myCSharp.de - Member

Avatar #avatar-3070.jpg


Dabei seit:
Beiträge: 790

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
herbivore
myCSharp.de - Experte

Avatar #avatar-2627.gif


Dabei seit:
Beiträge: 52329
Herkunft: Berlin

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
Paschulke
myCSharp.de - Member



Dabei seit:
Beiträge: 63

Themenstarter:

beantworten | zitieren | melden

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.
private Nachricht | Beiträge des Benutzers
herbivore
myCSharp.de - Experte

Avatar #avatar-2627.gif


Dabei seit:
Beiträge: 52329
Herkunft: Berlin

beantworten | zitieren | melden

Hallo Paschulke,

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

herbivore
private Nachricht | Beiträge des Benutzers
Paschulke
myCSharp.de - Member



Dabei seit:
Beiträge: 63

Themenstarter:

beantworten | zitieren | melden

Alles klar. Danke!
private Nachricht | Beiträge des Benutzers