Existe-t-il un moyen de vérifier si l'utilisateur est actuellement inactif ?
-
09-06-2019 - |
Question
Il existe une documentation sur Internet qui montre que Windows modifie le comportement de la commande NotifyIcon.BalloonTipShown si l'utilisateur est actuellement inactif et que c'est le cas. détecté en vérifiant les événements du clavier et de la souris.Je travaille actuellement sur une application qui passe la plupart de son temps dans la barre d'état système, mais qui affiche de temps en temps plusieurs info-bulles et j'aimerais empêcher l'utilisateur d'en manquer s'il est actuellement absent de la barre d'état système. système.Étant donné que toutes les info-bulles actuellement affichées sont détruites si une nouvelle est affichée, je souhaite ne pas les afficher si l'utilisateur est absent.
En tant que tel, existe-t-il un moyen de vérifier si l'utilisateur est actuellement inactif si l'application est réduite dans la barre d'état système ?
La solution
Que diriez-vous du Win32 LASTINPUTINFO fonction?
using System.Runtime.InteropServices;
[DllImport("User32.dll")]
static extern bool GetLastInputInfo(ref LASTINPUTINFO plii);
struct LASTINPUTINFO
{
public uint cbSize;
public uint dwTime;
}
Autres conseils
Code managé
Vérifiez la position de la souris toutes les secondes.S'il y a de nouveaux messages pour l'utilisateur, conservez-les jusqu'à ce que vous détectiez un mouvement avec la souris.
Code non géré
Voir Détection des temps d'inactivité avec les crochets de souris et de clavier
Merci pour les réponses, j'ai fini par utiliser la fonction GetLastInputInfo car elle est assez simple à implémenter dans l'application sur laquelle je travaille.