2010-12-08 8 views
0

Y a-t-il quelque chose qui fournit une information d'entrée du dernier utilisateur à l'échelle du système? Nous voulons utiliser C# pour obtenir le temps d'inactivité du système sur toutes les sessions et mettre la machine en veille si personne n'utilise la machine pendant X minutes.Comment calculer le temps d'inactivité du système et mettre la machine en veille?

Il semble que GetLastInputInfo soit spécifique à l'utilisateur. http://msdn.microsoft.com/en-us/library/ms646302(VS.85).aspx

+4

Pourquoi ne pas simplement laisser Windows le faire lui-même? –

+0

Il est censé être une solution qui prend soin de mettre les machines en veille au cas où il serait inactif, quel que soit l'utilisateur connecté. –

+0

Le système en veille n'est pas identique à un utilisateur qui n'interagit pas avec le système. Par exemple, un système peut être occupé à jouer des films ou de la musique. – Joh

Répondre

3

Vous pouvez utiliser Windows Task Scheduler et enregistrer une tâche lancée lorsque le système est inactif. C'est le meilleur moyen, car il n'est pas si évident de déterminer l'oisiveté d'un système (consultez l'article au moins pour avoir une idée de ce que cela signifie). Vous pouvez également protéger la tâche à l'aide de la sécurité, etc. Pour plus d'informations à ce sujet: Task Idle Conditions

Pour programmer le planificateur de tâches en C#, vous pouvez utiliser divers wrappers. Voici au moins un: Task Scheduler Managed Wrapper