Page 1 sur 1

[..] Boite de dialogue : Ouvrir, enregistrer Annuler

Posté : ven. 08 janv. 2016 11:36
par PH411
Bonjour à tous,

Je viens de découvrir autoIt et sont forum.

Je code habituellement sur VBA ( Excel) et je cherche à télécharger un fichier depuis un site internet.
Malheureusement juste après le moment de cliquer sur le fichier qui m’intéresse il existe une boite de dialogue "Ouvrir, enregistrer Annuler " que je n'arrive pas à passer avec VBA.
Je me suis donc tourner vers le logiciel AutoIt pour passer ce petit passage.
Ayant peu de connaissance dans ce logiciel j'en appel à votre aide

Un grand merci par avance pour votre aide !

Re: Boite de dialogue : Ouvrir, enregistrer Annuler : Intern

Posté : ven. 08 janv. 2016 13:53
par orax
Bienvenue sur le forum, merci de modifier le titre du message pour qu'il respecte les règles de présentation d'un message.

Re: [..] Boite de dialogue : Ouvrir, enregistrer Annuler

Posté : sam. 09 janv. 2016 16:09
par orax
Regarde la fonction InetGet pour télécharger un fichier.

Re: [..] Boite de dialogue : Ouvrir, enregistrer Annuler

Posté : sam. 09 janv. 2016 18:35
par PH411
Merci, mais si j'ai bien compris cette fonction il faut que url mene à un fichier. Ce qui n'est pas le cas pour ma part.

Je souhaite véritablement piloter cette boite de dialogue sous IE 11.

Re: [..] Boite de dialogue : Ouvrir, enregistrer Annuler

Posté : sam. 09 janv. 2016 21:26
par TomAijerrie
Bienvenue sur le forum
PH411 a écrit :je cherche à télécharger un fichier depuis un site internet.
PH411 a écrit :si j'ai bien compris cette fonction il faut que url mene à un fichier. Ce qui n'est pas le cas pour ma part.
Peux-tu nous montrer sur quoi tu travaille ?
Quand on clique sur un lien de téléchargement, il ouvre une autre page qui en réalité est l'url d'un fichier.
Cette URL est plutôt simple à trouver.
Par exemple, sous chrome, tu fais Ctrl+J, et tu a la liste des fichiers téléchargés.
(voir la pièe jointe)

Code : Tout sélectionner

#include <Inet.au3>
#include <INet.au3>

$URL_source = "https://www.autoitscript.com/files/autoit3/autoit-v3-setup.exe"
$Dir_destination = @MyDocumentsDir "\AutoIt3_instal.exe";ne pas se tromper d'extension,
;selon la configuration de ta machine tu ne pourras pas la changer

$Contenu_du_fichier = _INetGetSource($URL_source)
If FileWrite($Dir_destination,$Contenu_du_fichier) = 1 Then
    MsgBox(64,"Bravo","")
Else
    MsgBox(0,"Erreur","")
EndIf

;la même chose en une ligne :
MsgBox(0,FileWrite(@MyDocumentsDir "\AutoIt3_instal.exe",_INetGetSource("https://www.autoitscript.com/files/autoit3/autoit-v3-setup.exe")) ? "Bravo" : "Erreur","")

;Si tu veux une boite de dialogue

$URL_source = "https://www.autoitscript.com/files/autoit3/autoit-v3-setup.exe"
$Dir_destination = FileSaveDialog("Telecharger un fichier",@MyDocumentsDir,"Executables (*.exe)|Script Autoit (*.au3)|Images(*.bmp;*.jpg;*.png)|Tous les fichiers (*.*)",2,"AutoIt3_instal.exe")

$Contenu_du_fichier = _INetGetSource($URL_source)

If FileWrite($Dir_destination,$Contenu_du_fichier) = 1 Then
    MsgBox(64,"Bravo","")
Else
    MsgBox(0,"Erreur","")
EndIf

;la même chose en une ligne :
MsgBox(0,FileWrite(FileSaveDialog("Telecharger un fichier",@MyDocumentsDir,"Executables (*.exe)|Script Autoit (*.au3)|Images(*.bmp;*.jpg;*.png)|Tous les fichiers (*.*)",2,"AutoIt3_instal.exe"),_INetGetSource("https://www.autoitscript.com/files/autoit3/autoit-v3-setup.exe")) ? "Bravo" : "Erreur","")
 
Pense à placer entre les balises #cs (comment start) et #ce (comment end) les parties du code que tu n'utilises pas.

Re: [..] Boite de dialogue : Ouvrir, enregistrer Annuler

Posté : sam. 09 janv. 2016 21:53
par PH411
Merci pour l'aide,

Malheureusement je ne peux pas vous montrer mais j'ai un exemple qui est similaire à mon cas : avec ce lien :

https://www.euronext.com/fr/popup/data ... 6a6f38530

Comme indiqué, le document n'est pas disponible directement et le lien du téléchargement ( crtl + J) est le lien de la page et non de la pièce jointe .

Il existe des solutions pour cette exemple ( fonctionner par requette) mais je souhaite piloter la boite de dialogue car dans mon cas réel, je n'ai vraiment que ce choix.
ça fait plusieurs jour que je me prend la tête dessus et c'est un véritable casse tête...

Merci pour votre contribution.

Edit : j'ai écris avant de tester votre code. Je vais étudier son fonctionnement !

Re: [..] Boite de dialogue : Ouvrir, enregistrer Annuler

Posté : sam. 09 janv. 2016 22:55
par mikell
Je sais, ça manque d'élégance mais tu as toujours la possibilité de faire ça

Code : Tout sélectionner

Opt("WinTitleMatchMode", -2)  ; pour pouvoir n'utiliser qu'une partie du titre
;....
WinWait("Téléchargement")  ; boite "Ouvrir Enregistrer Annuler " 
WinActivate("Téléchargement")
Send("{TAB 3}")
Sleep(100)
Send("{enter}")

Re: [..] Boite de dialogue : Ouvrir, enregistrer Annuler

Posté : sam. 09 janv. 2016 22:56
par PH411
Oui j'imagine que c'est le code pour les sendkeys ?
C'est mon ultime option mais je ne préfère pas l'utiliser...

Re: [..] Boite de dialogue : Ouvrir, enregistrer Annuler

Posté : sam. 09 janv. 2016 22:57
par orax
Code à tester sur le site euronext

Code : Tout sélectionner

$sTitre = 'Please specify the download format | Euronext'
WinActivate($sTitre)
ControlClick($sTitre, '', 'DirectUIHWND1', 'primary', 4, 775, 25)
Send('{SPACE}')
ControlClick seul ne marchait pas donc j'ai ajouté un Send mais le Send oblige la fenêtre a être au premier plan.
Même si ce code peut marcher il est préférable de faire autrement quand c'est possible.
Le "DirectUIHWND1" est trouvé avec AU3Info dans le menu Tools de SciTE.

Re: [..] Boite de dialogue : Ouvrir, enregistrer Annuler

Posté : sam. 09 janv. 2016 23:59
par orax
de PH411 » Aujourd’hui, 21:53
de mikell » Aujourd’hui, 22:55
de PH411 » Aujourd’hui, 22:56
de orax » Aujourd’hui, 22:57
Il manque 54... dommage on fera mieux la prochaine fois ! Image