C'è un modo per verificare se l'utente è attualmente inattivo?
-
09-06-2019 - |
Domanda
C'è della documentazione su Internet che mostra che Windows modifica il comportamento del comando NotifyIcon.BalloonTipShown se l'utente è attualmente inattivo e questo è rilevato controllando gli eventi della tastiera e del mouse.Attualmente sto lavorando su un'applicazione che trascorre la maggior parte del suo tempo nella barra delle applicazioni, ma di tanto in tanto visualizza più suggerimenti di palloncini e vorrei impedire all'utente di perderne qualcuno se è attualmente lontano dal sistema.Poiché tutti i suggerimenti dei fumetti attualmente visualizzati vengono distrutti se ne viene visualizzato uno nuovo, voglio trattenermi dalla visualizzazione se l'utente è assente.
Pertanto, esiste un modo per verificare se l'utente è attualmente inattivo se l'applicazione è ridotta a icona nella barra delle applicazioni?
Soluzione
Che ne dici di Win32 LASTINPUTINFO funzione?
using System.Runtime.InteropServices;
[DllImport("User32.dll")]
static extern bool GetLastInputInfo(ref LASTINPUTINFO plii);
struct LASTINPUTINFO
{
public uint cbSize;
public uint dwTime;
}
Altri suggerimenti
Codice gestito
Controlla la posizione del mouse ogni secondo.Se ci sono nuovi messaggi per l'utente, mantienili finché non rilevi qualsiasi movimento con il mouse.
Codice non gestito
Vedere Rilevamento del tempo di inattività con i ganci del mouse e della tastiera
Grazie per le risposte, alla fine ho scelto la funzione GetLastInputInfo poiché è piuttosto semplice da implementare nell'applicazione su cui sto lavorando.