Gibt es eine Möglichkeit zu überprüfen, ob der Benutzer derzeit inaktiv ist?
-
09-06-2019 - |
Frage
Es gibt einige Dokumentationen im Internet, die zeigen, dass Windows das Verhalten des Befehls NotifyIcon.BalloonTipShown ändert, wenn der Benutzer derzeit inaktiv ist und dies der Fall ist wird durch die Überprüfung auf Tastatur- und Mausereignisse erkannt.Ich arbeite derzeit an einer Anwendung, die die meiste Zeit in der Taskleiste verbringt, aber von Zeit zu Zeit mehrere Ballontipps anzeigt, und ich möchte verhindern, dass der Benutzer einen davon verpasst, wenn er gerade nicht in der Taskleiste ist System.Da alle aktuell angezeigten Ballontipps zerstört werden, wenn ein neuer angezeigt wird, möchte ich sie nicht anzeigen, wenn der Benutzer abwesend ist.
Gibt es daher eine Möglichkeit zu überprüfen, ob der Benutzer derzeit inaktiv ist, wenn die Anwendung in der Taskleiste minimiert ist?
Lösung
Wie wäre es mit Win32 LETZTE PUTINFO Funktion?
using System.Runtime.InteropServices;
[DllImport("User32.dll")]
static extern bool GetLastInputInfo(ref LASTINPUTINFO plii);
struct LASTINPUTINFO
{
public uint cbSize;
public uint dwTime;
}
Andere Tipps
Verwalteter Code
Überprüfen Sie jede Sekunde die Position der Maus.Wenn es neue Nachrichten für den Benutzer gibt, behalten Sie diese bei, bis Sie eine Bewegung mit der Maus bemerken.
Nicht verwalteter Code
Sehen Erkennen von Leerlaufzeiten mit Maus- und Tastatur-Hooks
Vielen Dank für die Antworten. Am Ende habe ich mich für die Funktion „GetLastInputInfo“ entschieden, da sie in der Anwendung, an der ich arbeite, ziemlich einfach zu implementieren ist.