Autor Beitrag
CptGreenwood
Hält's aus hier
Beiträge: 3



BeitragVerfasst: Di 11.10.11 14:38 
Hallo,

ich habe ein WinForms-Anwendung geschrieben, die auf die Untätigkeit/Tätigkeit eines Benutzers reagieren soll. Wie bei einem Bildschirmschoner soll die Anwendung nach einer Zeit x ohne Mausbewegung und Tastendruck etwas spezielles veranlassen und nachdem eine Taste gedrückt, bzw. die Maus (irgendwo, nicht zwangsläufig in dem Anwendungsfenster) bewegt wurde etwas anderes tun.
Wie kann ich Leerlauf feststellen und wie das "Wiedererwachen"? Habe da keine Idee und wäre für Hilfe dankbar!

Grüße,
Cpt
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4809
Erhaltene Danke: 1061

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: Di 11.10.11 14:48 
Hallo,

mit der WinAPI-Funktion GetLastInputInfo kannst du rausfinden, wann zuletzt der User eine Eingabe (Maus, Tastatur) getätigt hat. Du müßtest also einen Timer verwenden, welcher diese Funktion per PInvoke aufruft: pinvoke.net/default....etLastInputInfo.html

Für diesen Beitrag haben gedankt: mats74
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4708
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Di 11.10.11 14:49 
Ich würde einen IMessageFilter implementieren der alle Maus und Tastatur WindowMessages beobachtet. Diese Implementierung hätte einen Timer der bei jeder beobachteten Windowmessage resetet wird. Ein Ablaufen des Timers bedeutet dann das Ausführen deines geheimnisvollen speziellen Codes.
CptGreenwood Threadstarter
Hält's aus hier
Beiträge: 3



BeitragVerfasst: Di 11.10.11 15:31 
Vielen Dank für die Antworten. Es hat super geklappt!