2011-06-08 4 views
12

Je voudrais mettre en pause mon programme si un utilisateur est inactif pendant 5 minutes. Par inactif je veux dire n'a pas pressé leur souris ou leur clavier pendant ce temps (y compris en dehors du programme aussi!). Des points de départ?Détection des utilisateurs inactifs dans Winforms

Répondre

10

Dans un temporisateur, vous pouvez p/appeler GetLastInputInfo() qui retournera le nombre ms depuis que l'entrée a été détectée par l'utilisateur, sur tous les processus de la session en cours.

+0

On dirait que ce dont j'ai besoin, mais la chose étrange est que LASTINPUTINFO n'augmente que lorsque je déplace ma souris. – Andrew

+4

Il renvoie le tick-time de la dernière entrée, il va donc augmenter, déduire de Environment.TickCount –

2

vous pourriez remplacer le WndProc et recherchez le message WM_IDLE

6

Cette question est très semblable à une vieille question:

.NET equivalent for GetLastInputInfo?

Ce qui fait référence à un bon article décrivant des différentes options en C#:

http://www.codeproject.com/KB/cs/uim.aspx

Si vous ne me dérange pas En utilisant P/Invoke et étant limité à l'exécution sur les systèmes Windows, l'utilisation de P/Invoke pour appeler GetLastInputInfo() est probablement la méthode la plus simple pour accomplir ce que vous voulez.

Questions connexes