Page 1 sur 1

[R] Détecter l'activité d'une fenêtre

Posté : mer. 30 avr. 2008 15:51
par x0r
Bonjour à toutes et à tous,

Voilà, je suis actuellement sur un script qui automatise la gestion de données utilisateurs sur des MFP; ce script est donc juste la pour automatiser une tâche que le logiciel de supervision gère.
Au départ mon script lance le logiciel de supervision des MFP, renseigne le login et le pass, puis attend 1min30 que le logiciel ai finit de "rafraichir" les machines.

Mon problème est le suivant :

Comme je l'ai dis, au lancement de ce programme, il rafraichit toutes les machines ( qui sont au nombre de 24 pour le moment mais à l'avenir elles seront plus nombreuses encore ), et ce "rafraichissement" prend un certain temps.
Pour le moment, j'ai donc effectué un sleep (90000); alors ça fonctionne naturellement puisque ça correspond effectivement au temps de rafraichissement des 24 machines, mais n'y aurai-t-il pas un moyen pour dire à AutoIt d'attendre que la fenêtre active cesse son activité ?

Idée annexe :

Plus tôt dans mon programme, je demande à l'utilisateur (qui ne sera autre qu'un informaticien), de renseigner le nombre exacte de MFP déployé. J'ai donc pensé à faire un temps de rafraichissement pour UNE machine, puis à multiplier par le nombre entré par l'utilisateur.

Merci à vous.

Re: [..] Détecter l'activité d'une fenêtre

Posté : mer. 30 avr. 2008 19:04
par Tlem
Qu'est-ce que MFP ?

La fenêtre du programme de supervision se ferme elle dés qu'elle à finit son rafraîchissement ?
Si c'est non, y à il dans cette fenêtre une zone qui renseigne l'état d'avancement du rafraîchissement ?

Le but, serait d'avoir un point de repère quelconque sur cette fenêtre de supervision (Ou encore de surveiller sa consommation de ressource) pour savoir lorsqu'elle à finit de faire le rafraîchissement, et permettre de continuer le script.

Re: [..] Détecter l'activité d'une fenêtre

Posté : lun. 05 mai 2008 09:16
par x0r
MFP pour MultiFunction Peripheral, cela désigne les photocopieurs multifonctions : imprimantes, scanner, fax, etc...

Effectivement, mise à part les ressources consommées par cette application, rien ne renseigne que la fenêtre est en cours de rafraichissement, si ce n'est le sablier.

Une fois le rafraichissement terminé, la fenêtre reste ouverte.

Re: [..] Détecter l'activité d'une fenêtre

Posté : lun. 05 mai 2008 16:36
par fred
Bonjour xOr,
il n'y a pas dans la fenetre, un cotrole qui se désactive durant le traitement.?
si oui, tu peux faire une boucle d'attente du type :

Code : Tout sélectionner

While 1
; si le bouton est toujours désactivé alors on attend
If ControlCommand("titre fenetre", "texte du controle", "[idcontrol]", "IsEnabled") = 0 Then
     Sleep(5)  
Else        
;sinon le bouton est activé et on sort de l'attente
      ExitLoop
EndIf
WEnd
 
en espérant t'avoir aidé.
fred

Re: [..] Détecter l'activité d'une fenêtre

Posté : mar. 06 mai 2008 09:26
par x0r
Malheureusement non, pour te dire, quand le programme recherche les informations sur tous les MFP listés, si on essaie de faire quoi que ce soit dans cette fenêtre, le programme plante ^^'

Mais merci beaucoup pour ton idée, ça pourra toujours servir pour autre chose.

Re: [..] Détecter l'activité d'une fenêtre

Posté : mar. 06 mai 2008 15:17
par Tlem
Essayez de voir avec :

Code : Tout sélectionner

MemGetStats ( )
; ou
_ProcessGetPriority ()
Si une inactivité prolongée peut être détectée, pour pouvoir agir en conséquence.

Re: [..] Détecter l'activité d'une fenêtre

Posté : mar. 06 mai 2008 16:39
par x0r
Merci pour ses suggestions, je crois que pour le moment je vais me contenter de ma 2ème "solution", à savoir : calculer un temps moyen de rafraichissement pour 1 machine, puis dans une variable, multiplier ce temps par le nombre (de machine) renseigné par l'utilisateur.

Ce qui donne à la place de mon vaseux sleep (90000) :

Code : Tout sélectionner

$nb_mfp=InputBox("Nombre de MFP", "Indiquez le nombre exacte de MFP déployés", "", "")
$refresh=3750*$nb_mfp
...
sleep ($refresh)
Certes ce n'est pas une solution extrêmement fiable, mais c'est déjà mieux qu'au début ^^

P.S : je me contente de ma solution, non pas parce-que vos suggestions ne me conviennent pas, mais car je suis un peu en retard sur ce programme et j'ai perdu pas mal de temps sur ce problème ;)