[R] Question sur l'utilisation de WinMove et WinActivate

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Azadrim
Niveau 1
Niveau 1
Messages : 2
Enregistré le : ven. 28 juil. 2017 18:06
Status : Hors ligne

[R] Question sur l'utilisation de WinMove et WinActivate

#1

Message par Azadrim »

Bonjour,

J'ai un petit soucis avec la fonction WinMove, je n'arrive pas à la faire fonctionner...
J'aimerais redimensionner mon navigateur FF en 800x600 pour pouvoir faire mes tests sur plusieurs machines (des résolutions en tout genre entre PC portable/fixe...)

Je fais comme cela mais mon navigateur ne change pas de dimension...

Global $hWnd = WinGetHandle("[CLASS:MozillaWindowClass]")
If @error Then
   MsgBox($MB_SYSTEMMODAL, "", "Oups")
   Exit
EndIf
WinActivate($hWnd)
WinMove($hWnd, "", 0, 0, 800, 600)

De plus j'aimerais que mon navigateur repasse au premier plan lors du démarrage du script, est-ce bien le rôle de WinActivate? (si oui, il ne fait rien non plus...)

Est ce que je dois préciser le nom de la fenêtre Firefox? Je n'en ai qu'une d'ouverte...

Merci d'avance.
Modifié en dernier par Azadrim le lun. 31 juil. 2017 08:10, modifié 1 fois.
Avatar du membre
jguinch
Modérateur
Modérateur
Messages : 2511
Enregistré le : lun. 14 févr. 2011 22:12
Status : Hors ligne

Re: Question sur l'utilisation de WinMove et WinActivate

#2

Message par jguinch »

WinGetHandle semble te retourner la mauvais handle (il y a plusieurs handle pour une même instance de Firefox)
Tu peux essayer comme ça :
Local $hFirefox = _GetFirefoxHwnd()
WinMove($hFirefox, "", 0, 0, 800, 600)


Func _GetFirefoxHwnd()
   Local $aList = WinList("[CLASS:MozillaWindowClass]")
   If @error Then Return 0
   For $i = 1 To $aList[0][0]
      If BitAND( WinGetState($aList[$i][1]), 2) Then Return $aList[$i][1]
   Next
   Return 0
EndFunc
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
Avatar du membre
orax
Modérateur
Modérateur
Messages : 1479
Enregistré le : lun. 23 mars 2009 04:50
Localisation : ::1
Status : Hors ligne

Re: Question sur l'utilisation de WinMove et WinActivate

#3

Message par orax »

On retrouve parfois la classe MozillaWindowClass dans d'autres logiciels (Mozilla Thunderbird par exemple). Donc, s'il y a besoin, on pourrait également vérifier que le nom de l'exécutable (firefox.exe) correspond et que le titre contient "Mozilla Firefox".

Code : Tout sélectionner

#include <Process.au3>
Local $hFirefox = _GetFirefoxHwnd()
WinSetState($hFirefox, "", @SW_RESTORE)
WinMove($hFirefox, "", 0, 0, 800, 600)

Func _GetFirefoxHwnd()
	Local $aList = WinList("[CLASS:MozillaWindowClass]")
	If @error Then Return 0
	For $i = 1 To $aList[0][0]
		If BitAND(WinGetState($aList[$i][1]), 2) And StringInStr($aList[$i][0], " - Mozilla Firefox", 1) And _ProcessGetName(WinGetProcess($aList[$i][1]) == "firefox.exe") Then Return $aList[$i][1]
	Next
	Return 0
EndFunc   ;==>_GetFirefoxHwnd
De petits détails peuvent faire toute la différence. — Quand la boule de neige commence à rouler… poussez-la. (Columbo)
Avatar du membre
jguinch
Modérateur
Modérateur
Messages : 2511
Enregistré le : lun. 14 févr. 2011 22:12
Status : Hors ligne

Re: Question sur l'utilisation de WinMove et WinActivate

#4

Message par jguinch »

Oui, c'est plus sûr :wink:
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: Question sur l'utilisation de WinMove et WinActivate

#5

Message par mikell »

Et ça c'est encore plus sûr :mrgreen:
... la fenêtre Firefox? Je n'en ai qu'une d'ouverte...
Opt("WinTitleMatchMode", -2)
WinMove("mozilla firefox", "", 0, 0, 800, 600)
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Azadrim
Niveau 1
Niveau 1
Messages : 2
Enregistré le : ven. 28 juil. 2017 18:06
Status : Hors ligne

Re: Question sur l'utilisation de WinMove et WinActivate

#6

Message par Azadrim »

Merci pour toutes vos réponses :D
J'ai utilisé la 1ère solution proposée et cela fonctionne à merveille, je garde les autres solutions si un jour le problème se représente ^^
Répondre