Bonjour, tout d'abord, C'est quoi un Handle???
Vous savez que chaque fenêtre possède un numéro qui l'identifie? Cela s'appelle le Handle. Pourquoi ne pas apprendre à s'en servir, pour gérer plusieurs fenêtres c'est top, on peut lui faire faire des choses sans la voir!! Ce numéro est unique à la fenêtre.
Exemple, j'ai deux fenêtres de dofus, je veux dans mon programme faire disparaitre une des fenêtres et apparaitre l'autre. Compliquer vous me direz?
Eh bien non!
Tout d'abord, il y a la partie stockage des handles. Dans quoi on stocke des numéros? Celui qui me dit autre chose qu'une variable je le tue.
Donc nous allons utiliser la variable $handle1 puis $handle2 (cherchez pas c'est moi qui l'ai inventé), on aurait pu utiliser $toto1 $toto2 aussi.
Mais comme nous avons deux fenêtres, pour une optimisation du programme on pourrait le faire en boucle alors on va plutôt faire une variable sous forme de tableau. $handle[0] et $handle[1].
On stocke le handle. 1 ère chose.
$handle[0] = WinGetHandle("classname=ShockwaveFlash")
WinMove($handle[0],"",0,0)
WinSetState($handle[0], "", @SW_HIDE)
Ceci "classname=ShockwaveFlash", vous le trouvez dans Autoit v3 Windows Info, au niveau de la Class. Vous pouvez prendre le titre aussi, plutot que d'écrire une bêtise car je ne sais pas si c'est titlename ou autre chose, je vous laisse découvrir.
Donc dans ce code, nous stoquons le handle de la fenêtre portant la class "ShockwaveFlash" (Dofus).
Nous bougeons la fenêtre en 0,0, vous remarquez que l'on met $handle[0] au lieu de "Dofus" ^^.
Et nous la faisons disparaitre. C'est mieux pour sélectionner la deuxième je trouve.
Après la deuxième c'est la même mais avec $handle[1]. Voilà le truc, on peut sélectionner deux fois la même...
Donc ce qu'il faut faire, c'est demander de cliquer sur la fenêtre, la faire disparaitre, et demander de cliquer sur l'autre (avec une tempo de 2 sec environ entre les fenêtres).
Nous nous trouvons avec ceci
WinWaitActive("Dofus")
$handle[0] = WinGetHandle("classname=ShockwaveFlash")
WinMove($handle[0],"",0,0)
WinSetState($handle[0], "", @SW_HIDE)
sleep(2000)
$handle[1] = WinGetHandle("classname=ShockwaveFlash")
WinMove($handle[1],"",0,0)
WinSetState($handle[1], "", @SW_HIDE)
A ce stade là, pas besoin de commentaire.
Pour interagir avec une fenêtre, il suffit de mettre $handle[X] (ou X € R et X >= 0) à la place du nom.
exemple :
WinSetState($handle[$cpt], "", @SW_SHOW)
WinActivate($handle[$cpt],"")
WinWaitActive( $handle[$cpt] , "" )
Mon X est $cpt.
WinActivate______________Active la fenêtre
WinActive______________Vérifie si une fenêtre existe et si elle est actuellement activée
WinClose______________ Ferme une fenêtre
WinExists______________Vérifie si une fenêtre existe.
WinFlash______________Flash la fenêtre dans la barre de windows
WinGetCaretPos______________Returns the coordinates of the caret in the foreground window (Retourne des coordonnées de la fenêtre???)
WinGetClassList______________Donne la class d'une fenêtre
WinGetClientSize______________Donne la taille d'une fenêtre
WinGetHandle______________ Donne le Handle d'une fenêtre
WinGetPos______________Donne la position et la taille d'une fenêtre.
WinGetProcess______________Donne le Process ID (PID) d'une fenêtre
WinGetState______________Donne l'état d'une fenêtre
WinGetText ______________Donne le texte d'une fenêtre
WinGetTitle ______________Donne le titre complet d'une fenêtre
WinKill ______________Force une fenêtre à se fermer
WinList ______________Retrieves a list of windows.(???)
WinMenuSelectItem______________Invoque le menu d'une fenêtre
WinMinimizeAll______________Minimise toutes les fenêtres
WinMinimizeAllUndo ______________Fait le contraire de WinMinimizeAll toutes les fenêtres
WinMove______________Bouge ou redimensionne une fenêtre
WinSetOnTop______________Met une fenêtre toujours au premier plan ou pas
WinSetState______________Montre, cache, minimise, maximise, ou restaure une fenêtre
WinSetTitle______________Change le titre de la fenêtre
WinSetTrans______________Rend une fenêtre transparante (Windows 2000/XP or later)
WinWait______________Le script se met en pause jusqu'à ce que la fenêtre existe.
On peut aussi l'utiliser avec les ControlSend et au final, tout ce qui a besoin d'interagir avec les fenêtres et ou il faut mettre le titre ou autre dans la config d'une fonction.
Je ne sais pas si il y a tout ^^