OVH Cloud OVH Cloud

Détecter l'inactivité sur le pc comme la mise en veille

2 réponses
Avatar
Mick
Bonjour,
j'aimerais que le service windows que je suis en train de faire arrive à
détecter la reprise en main du pc par le user.
En gros, que le service soit en stand bye si le pc est inactif pendant plus
de X minutes et redémarre dès que le user touche sa souris... comme la
gestion de mise en veille donc..

Quelqu'un aurait une piste pour détecter l'inactivité ? checker
l'utilisation du processeur tous les x temps par exemple ?

Merci de vos conseils.

2 réponses

Avatar
Frédéric Queudret [MS]
Bonjour,

Pour vérifier l'activité du processeur, vous pouvez utiliser les compteurs
de performance (PerformanceCounter) et déterminer un seuil de tolérance à
partir du quel vous considérez le PC inutilisé (voir l'objet Processor) par
exemple.
Pour détecter la mise en veille, c'est plus "bas niveau". Cherchez "Winlogon
Notification Events" dans MSDN. En .NET cela risque de ne pas être évident.
Bon courage,
Frédéric.

"Mick" wrote in message
news:420cac22$0$632$
Bonjour,
j'aimerais que le service windows que je suis en train de faire arrive à
détecter la reprise en main du pc par le user.
En gros, que le service soit en stand bye si le pc est inactif pendant
plus
de X minutes et redémarre dès que le user touche sa souris... comme la
gestion de mise en veille donc..

Quelqu'un aurait une piste pour détecter l'inactivité ? checker
l'utilisation du processeur tous les x temps par exemple ?

Merci de vos conseils.




Avatar
Simon Mourier [MS]
Pour le réaliser bien (en tenant compte de tous les paramètre), ce n'est pas
forcément évident. Il y a plusieurs méthodes
A) la fonction GetLastInputInfo. Le plus simple mais pas forcément
disponible sur toutes les plateformes
Voir un exemple C# ici:
http://www.stevex.org/dottext/archive/2004/02/11/308.aspx

B) les trois fonctions
BeginIdleDetection, EndIdleDetection, GetIdleMinutes, voir dans MSDN
A priori il vaut mieux utiliser A)

C) Utiliser des hooks. C'est compliqué, voir ici
http://www.developer.com/net/cplus/print.php/3416271

D) Vous pouvez enfin utiliser le gestionnaire de tâche (Task Scheduler),
regardez notamment IScheduledWorkItem::SetFlags

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/taskschd/taskschd/ischeduledworkitem_setflags.asp

pour déclencher des tâches qui pourraient prévenir votre service (en
utilisant des évènements nommés interprocessus par exemple)

Simon.


"Mick" a écrit dans le message de news:
420cac22$0$632$
Bonjour,
j'aimerais que le service windows que je suis en train de faire arrive à
détecter la reprise en main du pc par le user.
En gros, que le service soit en stand bye si le pc est inactif pendant
plus
de X minutes et redémarre dès que le user touche sa souris... comme la
gestion de mise en veille donc..

Quelqu'un aurait une piste pour détecter l'inactivité ? checker
l'utilisation du processeur tous les x temps par exemple ?

Merci de vos conseils.