Page 1 sur 1
[R] Agrandir une fenêtre (comme un clique sur le carré)
Posté : dim. 09 janv. 2011 14:51
par Niverton
Bonjour, je voudrais savoir s'il y a une fonction AutoIt3 (ou une UDF) qui permettrait d'agrandir au maximum une fenêtre, comme si l'on cliquer sur le carré à gauche de la croix (sous Windows, les autres OS je ne sais pas).
Je crois que je confond un peu tout, mais les fonctions WinSetState("Titre de ma fenêtre","Texte",@SW_MAXIMIZE) et WinMove("Titre de ma fenêtre","Texte",@DesktopWidth, @DesktopHeight) n'ont rien donnée.
Merci d'avance !
Re: [...] Agrandir une fenêtre (comme un clique sur le carré)
Posté : dim. 09 janv. 2011 15:04
par ani
Bonjour et soyez le bienvenu parmis nous.
normalement la fonction WinSetState devrait aller.
Si pas essayé de récupérer le handle de la fenêtre.
Exemple
Code : Tout sélectionner
$Handle = WinGetHandle("titredelafenetre","texte")
Winsetstate($handle,"",@SW_MAXIMIZE)
bonne continuation

Re: [...] Agrandir une fenêtre (comme un clique sur le carré)
Posté : dim. 09 janv. 2011 15:58
par Niverton
Merci pour la réponse rapide
Mais non, ça ne marche pas
J'ai fais un test de retour d'erreur
Code : Tout sélectionner
WinWaitActive("Titre de la fenêtre") ;J'ai même fais attendre le programme que la fenêtre soit là !
$handle = WinGetHandle("Titre de la fenêtre")
If Winsetstate($handle,"",@SW_MAXIMIZE) = 0 Then
MsgBox(48,"Erreur","Impossible d'agrandir la fenètre.")
Exit(1)
EndIf
Je lance AutoItSecure, Mode Admin, Lancer, la fenêtre s'ouvre, mais elle ne s'agrandit pas.
Y aurait-il un rapport avec le fait que j'utilise Windows 7 ou que le programme que j'essaye d'agrandir soit en Flash ?
Re: [...] Agrandir une fenêtre (comme un clique sur le carré)
Posté : dim. 09 janv. 2011 15:59
par jbnh
Pouvez-vous nous donner plus d'informations sur votre script ou du moins les lignes concernées ?
Re: [...] Agrandir une fenêtre (comme un clique sur le carré)
Posté : dim. 09 janv. 2011 16:16
par Niverton
C'est un script qui lance le launcher d'un jeu, puis lance le jeu lui même et me connecte.
En tout il faut cliquer sur 2 boutons et sur un champs, entrer le mot de passe, puis appuyer sur Entrée.
Les boutons n'ont pas de texte visibles par le AutoIt Window Info, pour le launcher pas de problème, il s'ouvre toujours au centre de l'écran, donc le bouton ne change pas de place. Mais la fenêtre du jeu apparait un peu partout aléatoirement comme bon lui semble.
Après, pour les lignes concernées... bah il faudrait que la fenêtre s'agrandisse après que la fenêtre principale du jeu se soit lancée.
Est-ce que vous voulez le script entier ?
Re: [...] Agrandir une fenêtre (comme un clique sur le carré)
Posté : dim. 09 janv. 2011 17:10
par Niverton
Dans votre code, vous ne declenchez pas l'action winsetstate, vu l'utilisez uniquement dans un if... Plutot normal que ca ne marche pas?
J'ai essayer en dehors du If, même résultat
La fenêtre conserve sa taille, et le script continu sans s'en apercevoir :/
Après avoir tester sous Windows 7 et Xp sp3, je sais que ce n'est pas un problème de compatibilité (ça ne marche pas dans tout les cas)
C'est forcément un problème du script.
► Afficher le texte
Code : Tout sélectionner
Dim $continuer = 1
Dim $erreur = Run("C:\Program Files (x86)\Poulet\UpLauncher.exe") ;On lance le launcher
If $erreur = 1 Then ; Si il y a une erreur, on quitte
MsgBox(48, "Erreur !", "Impossible de lancer Poulet.")
Exit(1)
EndIf
WinWaitActive("Lanceur Poulet")
While $continuer = 1 ;On lance Poulet
MouseMove(1024, 482) ;On déplace la souris
$position = MouseGetPos()
If $position[0] = 1024 AND $position[1] = 482 Then ;Si la souris et à la bonne place, alors on continue, sinon on recommence
MouseClick("left")
Sleep(1000) ; On attend une seconde que la fenètre s'ouvre, ou que la MAJ soit faites s'il y en a.
If WinActive("Poulet") Then
$continuer = 0
EndIf
EndIf
Sleep(10)
WEnd
WinWaitActive("Poulet")
$handle = WinGetHandle("Poulet")
$retour = WinSetState($handle,"",@SW_MAXIMIZE)
If $retour = 0 Then
MsgBox(48,"Erreur","Impossible d'agrandir la fenètre.")
Exit(1)
EndIf
$continuer = 1
While $continuer = 1 ;On clique sur Ok
MouseMove(1255, 280)
$position = MouseGetPos()
If $position[0] = 1255 AND $position[1] = 280 Then ;Si la souris est au bon endroit
MouseClick("left")
Sleep (1000) ;On attend 1sec que ça charge
$continuer = 0
EndIf
Sleep(10)
WEnd
$continuer = 1
While $continuer = 1 ;On entre le mdp
MouseMove (468, 416)
$position = MouseGetPos()
If $position[0] = 468 AND $position[1] = 416 Then
MouseClick("left")
Send("Mot de passe")
Send("{ENTER}")
$continuer = 0
EndIf
Sleep(10)
WEnd
J'ai remplacer le nom du jeu par "Poulet", comme ça pas de pub, et j'ai enlever mon mot de passe.
Qui saura déceler la faille ? Par ce que vu mon niveau, y'en a une, et une grosse ^^
Re: [...] Agrandir une fenêtre (comme un clique sur le carré)
Posté : dim. 09 janv. 2011 17:23
par legend
Bonjour,
Certaines applications de jeu ne peuvent pas être agrandie.
essaye de remplacer la ligne $continuer = 0 par exitloop qui est plus facile. et met While 1 au début . . .
Les cordonnées de la souris changent quand le pc change. donc ce n'est pas une solution d'agrandir la fenêtre.
Cherche un peut la fonction (UDF) ImageSearch.
J'ai une petite question : C'est poulet ou Dofus? (répond moi en mp ^^)
Bienvenue dans le forum et bonne journée.
Re: [...] Agrandir une fenêtre (comme un clique sur le carré)
Posté : dim. 09 janv. 2011 17:56
par Niverton
Les cordonnées de la souris changent quand le pc change. donc ce n'est pas une solution d'agrandir la fenêtre.
Je sais, mais de toute façon je comptait garder ce script pour moi, et je compte m'en servir uniquement sur mon PC
J'ai modifier mon code avec les ExitLoop, je ne connaissais pas cette technique, merci ça sera plus compréhensible
Ce jeu peut-être agrandit manuellement en tout cas, et cela n'explique pas pourquoi ça ne marche pas non plus avec le Bloc-Notes :/
J'ai trouvé ImageSearch, je m'en vais tester ça dans la soirée et je marquerez le sujet comme résolu si cela marche.
Merci à tous pour votre aide et votre accueil !
Re: [...] Agrandir une fenêtre (comme un clique sur le carré)
Posté : dim. 09 janv. 2011 18:25
par Iste
Vous pouvez aussi faire un clic relatif a la fenêtre
Voir :
WinGetPos()
MouseCoordMode
Re: [...] Agrandir une fenêtre (comme un clique sur le carré)
Posté : dim. 09 janv. 2011 21:16
par Tlem
Pour moi, ce code fonctionne :
Code : Tout sélectionner
Run("notepad")
WinWait("Sans titre - Bloc-notes")
$calcHwnd = WinGetHandle("Sans titre - Bloc-notes")
Sleep(500)
WinSetState("[active]","",@SW_MAXIMIZE)
Edit :
Une autre solution qui vous permettrait un effet d'agrandissement en jouant sur le dernier paramètre pour la vitesse:
Re: [...] Agrandir une fenêtre (comme un clique sur le carré)
Posté : lun. 10 janv. 2011 16:26
par mystere
Salut Niverton, ton problème doit être une histoire que tu agrandi la fenêtre avant même quelle existe. Fait un _waitforimagesearch ou bien un winwait ou encore pire un sleep pour être sur que ton jeu soit bien démarré. Si nom si tu ne veux pas de prendre la tête pour agrandir ton jeux et que les coordonné de ton jeu dépends de ton jeux et non de la résolution écran tu a :
Code : Tout sélectionner
controlclick("titre de ton application","","[classnn:le bouton sur lequel cliquer]")
Ici le "" signifie que j’ai pris le paramètre par défaut qui est le clique gauche, sa peut aussi bien être le clic droit. Pour le classnn du bouton sa peut aussi bien êtres des coordonnés.
Regarde dans la doc si tu veux avoir plus d’information sur cette fonction.
Re: [...] Agrandir une fenêtre (comme un clique sur le carré)
Posté : lun. 10 janv. 2011 16:47
par legend
Merci pour cette réponse utile mais les controls de la fenêtre qu'il utilise ne sont totalement pas détecté par autoit. Ou bien que la fenêtre n'est pas composée a partir de controls mais de "animations" qu'on peut comparer a flash . . .
Bref c'est comme tu lui dit de cliquer sur le bouton d'une page IE en utilisant controlclick sans les cords du bouton.
Re: [...] Agrandir une fenêtre (comme un clique sur le carré)
Posté : lun. 10 janv. 2011 17:33
par Niverton
Pour moi, ce code fonctionne :
Code : Tout sélectionner
Run("notepad")
WinWait("Sans titre - Bloc-notes")
$calcHwnd = WinGetHandle("Sans titre - Bloc-notes")
Sleep(500)
WinSetState("[active]","",@SW_MAXIMIZE)
Pas pour moi
Salut Niverton, ton problème doit être une histoire que tu agrandi la fenêtre avant même quelle existe.
Non, même avec tout les contrôles (gros Sleep(5000) ou WinWait,WinWaitActive ect.), la fenètre ne s'agrandit pas, mais en plus AutoIt crois qu'elle est agrandie.
Les cotrolClick ne marche pas, l'aplication est en Flash, les boutons sont des animation comme le dit legend.
D'ailleur merci à lui pour _ImageSearch, ça a résolu mon problème :p
Et puis merci à tous, vous avez su proposer des solutions toutes plus intéressantes les unes que les autres !
J'ai modifier mon code, quand je lance le script, tout vas bien. Mais si je compile puis que je lance le .exe, ça plante

Une idée svp ?
Je sais j'ai beaucoup de problèmes xD
Re: [...] Agrandir une fenêtre (comme un clique sur le carré)
Posté : lun. 10 janv. 2011 22:05
par Tlem
Niverton a écrit :Pour moi, ce code fonctionne : ...
...
Pas pour moi

Hummm j'avais pas vu que vous aviez Seven ...
Avec
WinTitleMatchMode ça devrait aller mieux.

Code : Tout sélectionner
Opt("WinTitleMatchMode", 2)
$Titre_Fenetre = "Sans titre"
Run("notepad")
WinWait($Titre_Fenetre)
$calcHwnd = WinGetHandle($Titre_Fenetre)
Sleep(500)
WinSetState($Titre_Fenetre,"",@SW_MAXIMIZE)
Niverton a écrit :Mais si je compile puis que je lance le .exe, ça plante

Une idée svp ?
Votre Windows Seven, il est
32bits ou 64Bits

Re: [...] Agrandir une fenêtre (comme un clique sur le carré)
Posté : lun. 10 janv. 2011 22:19
par legend
@Tlem : Tu pourrais mieux expliquer la différence entre 32bits et 64Bits.
Car je vois ce problème de compatibilité souvent mais j'y comprend rien ^^.
Merci et bonne journée
Re: [...] Agrandir une fenêtre (comme un clique sur le carré)
Posté : lun. 10 janv. 2011 22:29
par Tlem
Lancez Scite4AutoIt, tapez du code dedans et appuyez sur CTRL + F7.
A droite de 'Output arch', que voyez-vous ?

Re: [...] Agrandir une fenêtre (comme un clique sur le carré)
Posté : lun. 10 janv. 2011 22:39
par legend
Ouais je vois, mais c'est nul ce truc . . . Pourquoi ils ont pas fait un seul type de bit.
Enfin je sais pas ce que ça change vraiment . . . la différence entre les 2 (mais le nom me fais penser que c'est la manière dont le pc lis le langage binaire de l'application . . .)
Bon Il faut vraiment que j’arrête de flooder!!! -_-"
Sinon je suis pas le seul, quand je vois tes 6432 (ils étaient presque 8000 il y a pas longtemp ^^)
Merci et bonne journée (la je vais dormir . . . je répond demain)
Re: [...] Agrandir une fenêtre (comme un clique sur le carré)
Posté : lun. 10 janv. 2011 22:55
par Tlem
Re: [...] Agrandir une fenêtre (comme un clique sur le carré)
Posté : mar. 11 janv. 2011 17:29
par Niverton
Ah oui, c'est vraie qu'en (x86) l'automate marche beaucoup mieux, merci ^^D
Et d'ailleurs le code pour mettre la fenêtre en grand marche aussi !
Merci beaucoup à vous tous, votre aide m'a été très précieuse :p