Page 1 sur 1

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

Posté : ven. 28 juil. 2017 18:14
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.

Re: Question sur l'utilisation de WinMove et WinActivate

Posté : sam. 29 juil. 2017 14:06
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

Re: Question sur l'utilisation de WinMove et WinActivate

Posté : sam. 29 juil. 2017 15:15
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

Re: Question sur l'utilisation de WinMove et WinActivate

Posté : sam. 29 juil. 2017 16:51
par jguinch
Oui, c'est plus sûr :wink:

Re: Question sur l'utilisation de WinMove et WinActivate

Posté : sam. 29 juil. 2017 20:11
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)

Re: Question sur l'utilisation de WinMove et WinActivate

Posté : lun. 31 juil. 2017 08:07
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 ^^