Page 1 sur 1
[R] Sessions Windows Active
Posté : sam. 05 févr. 2011 00:09
par matwachich
Me voici me voila, avec une nouvelle question!
Je suis sur un projet de contrôle du temps d’accès au PC pour une session utilisateur (en l’occurrence, celle de mon petit frère, un vrai accro à Dofus!)
Le programme marche parfaitement, sauf que quand la session n'est pas active, mais toujours ouverte (Démarrer -> Arrêter -> Changer d'utilisateur ou CTRL+L), le compte à rebours continu et le temps qu'il reste avant la fermeture automatique de la session diminue.
Ma question: Comment savoir si la session est active ou pas?
Re: [..] Sessions Windows Active
Posté : sam. 05 févr. 2011 00:13
par Tlem
Re: [..] Sessions Windows Active
Posté : sam. 05 févr. 2011 02:40
par matwachich
Merci Tlem pour la réponse.
C'est pas tout à fait ce qu'il me faut:
Ca aurai pu l'être mais imaginons que le frangin soit devant le PC mais à regarder un film, il ne touche ni le clavier ni la souris, mais la fonction dira que le PC est 'Idle'.
Il me faudrait quelque chose de plus précis, et concret: La session est active ou pas!
En cherchant sur le forum anglais:
http://www.autoitscript.com/forum/topic ... msearch__1
http://www.autoitscript.com/forum/topic ... ntry564543
Il utilisent à chaque fois la méthode du Idle Timer, mais c'est pas ce qu'il me faut (pour la raison sus-citée)
Merci
Re: [..] Sessions Windows Active
Posté : sam. 05 févr. 2011 12:45
par Tlem
Heuu, vous avez quand même une base de départ.
En utilisant un code similaire à celui-ci :
► Afficher le texte
Code : Tout sélectionner
#Include <Timers.au3>
HotKeySet("{Esc}", "_Terminate")
While (1)
$not_idle = _Timer_GetIdleTime();_CheckIdle($last_active)
ToolTip("Inactivité utilisateur pendant " & Int($not_idle/1000) & " seconde(s)")
Sleep(200)
WEnd
Func _Terminate()
Exit
EndFunc ;==>_Terminate
Et là, vous combinez la détection de l'activité du PC.
Bon, là c'est déjà plus délicat car sur quoi ce baser pour déterminer si le PC n'est pas utilisé ?
Peut être surveiller l'activité du disque dur, ou celle du CPU. ^^
Re: [..] Sessions Windows Active
Posté : sam. 05 févr. 2011 13:43
par matwachich
Oui c'est possible.
Si non je vient d'avoir une idée, mais pas le temps de l’essayer maintenant: (Il faut suivre!)
- On récupère le handle de la fenètre Program Manager actuellement active (le bureau)
(WinGetHandle)
- On récupère le PID du process correspondant (c'est à dire explorer.exe)
(_WinAPI_GetWindowThreadProcessId)
- On regarde à quel utilisateur appartient ce processus, et on a notre utilisateur actuellement actif
(Lien)
Je vais tester et je vous tien au courant (normalement ce soir)
Re: [..] Sessions Windows Active
Posté : sam. 05 févr. 2011 16:27
par Tlem
Ou plus simplement, vous récupérez les infos de la fenêtre active, puis le processus rataché et enfin on regarde si il consomme du CPU ou de la RAM.
Même si en substance c'est presque identique, ça ne l'est pas totalement.

Re: [..] Sessions Windows Active
Posté : sam. 05 févr. 2011 22:39
par matwachich
J'ai trouvé la méthode direct et concrète que je voulais!
http://www.autoitscript.com/forum/topic ... ntry698711
Re: [..] Sessions Windows Active
Posté : sam. 05 févr. 2011 23:24
par Tlem
Hummm, je viens de relire votre premier sujet et j'étais passé à coté du fait que vous parliez d'une session verrouillée puisque votre message initiale à été modifié juste après ma réponse.
Malheureusement, j'étais resté sur la première version, d’où l’incompréhension.
