2008-08-21 13 views
3

Es gibt einige Dokumentation im Internet, der zeigt, dass Windows das Verhalten des NotifyIcon.BalloonTipShown Befehls ändert, wenn der Benutzer zur Zeit im Leerlauf ist, und dies ist detected by checking for keyboard and mouse events. Ich arbeite gerade an einer Anwendung, die die meiste Zeit im Systemtray verbringt, aber von Zeit zu Zeit Popup-Ups mit mehreren Sprechblasen macht und ich möchte verhindern, dass der Benutzer sie verpasst, wenn sie gerade nicht in der Nähe sind System. Da aktuell angezeigte Sprechblasen-Tipps zerstört werden, wenn eine neue angezeigt wird, möchte ich sie nicht anzeigen, wenn der Benutzer abwesend ist.Gibt es eine Möglichkeit zu überprüfen, ob der Benutzer momentan nicht aktiv ist?

Als solches ist es eine Möglichkeit, um zu überprüfen, ob der Benutzer zur Zeit im Leerlauf ist, wenn die Anwendung in die Taskleiste minimiert wird?

Antwort

4

Wie über die Win32 LASTINPUTINFO Funktion?

using System.Runtime.InteropServices; 

[DllImport("User32.dll")] 
static extern bool GetLastInputInfo(ref LASTINPUTINFO plii); 

struct LASTINPUTINFO 
{ 
    public uint cbSize; 
    public uint dwTime; 
} 
+0

Richtig !!! Ich würde nur Link zu dem LASTINPUTINFO mit LayoutKind.Sequential hinzu: http://www.pinvoke.net/default.aspx/Structures/LASTINPUTINFO.html –

1

Managed Code

prüfen Position der Maus in jeder Sekunde. Wenn neue Nachrichten für den Benutzer vorhanden sind, halten Sie diese so lange fest, bis Sie eine Bewegung mit der Maus feststellen.

Unmanaged Code

Siehe Detecting Idle Time with Mouse and Keyboard Hooks

+0

Was ist mit Tastatureingabe? – Garrett

0

Danke für die Antworten, landete ich mit der GetLastInputInfo Funktion steigen, da es ziemlich geradlinig in der Anwendung zu implementieren ist auf ich arbeite.

Verwandte Themen