J'essaye de récupérer le chemin d'un fichier qu'envoie un utilisateur sur le net en passant par la FileOpenDialog du navigateur. Pour ce faire je cache la fenêtre initial pour afficher une FileOpenDialog d'autoit. Étant donné que que l'argument @SW_HIDE ne fonctionne pas je déplace la fenêtre du navigateur hors du cadre avec WinMove.
Or malgré que la fenêtre soit graphiquement toujours dans le cadre la fonction WinGetPos m'indique qu'elle se situe au coordonné indiqué par WinMove.
While 1
Do
Sleep(50)
Until WinExists("Choisir un fichier à télécharger") ;la fenêtre 'existe' avant d'être affiché
$hEnvoi = WinGetHandle("Choisir un fichier à télécharger")
Do
WinMove($hEnvoi,"",@DesktopWidth,Default,Default,Default,1)
Sleep(10)
Until WinGetPos($hEnvoi)[0] = @DesktopWidth
$file = FileOpenDialog("Choisir un fichier à télécharger et sauvegarde d'une copie", @DesktopDir&"\" , "Images (*.jpg;*.bmp;*.jpeg)", $FD_FILEMUSTEXIST)
FileCopy($file,@DesktopDir & "\")
ControlSetText($hEnvoi,"","Edit1",$file)
ControlClick($hEnvoi,"","Button1")
WEnd
Si on indique pas d'argument "speed" pour WinMove le problème revient tout le temps. Avec l'argument "1" le problème revient 1 fois sur 10.
Modifié en dernier par yohan8 le lun. 24 nov. 2014 19:18, modifié 1 fois.