Page 1 sur 1
[R] Récupérer un lien qui n'est pas une page IE
Posté : sam. 27 juin 2009 18:46
par DJSIR
Bonjour. J'aimerais faire plusieurs choses avant tout.
1. Quand je navigue avec IE, j'aimerais que quand je clique sur un lien qui n'est pas une page mais un fichier, autoit le detecte et m'affiche par exemple une msgbox.
2. Après, je pense pouvoir me débrouiller tout seul pour télécharger le fichier grâce au lien récupéré.
Merci !
Re: [..] Récupérer un lien qui n'est pas une page IE
Posté : mar. 30 juin 2009 00:54
par jumby
Votre idée m'a inspiré.
Voici mon script :
► Afficher le texte
Code : Tout sélectionner
Opt("WinTitleMatchMode", 2)
#include <IE.au3>
#include <Misc.au3>
#include <File.au3>
#include <Array.au3>
Local $extension[10]
; On énumère les extensions recherchées par le script. /!\ Chaque extension doit avoir 3 caractères.
$extension[0] = "rar"
$extension[1] = "zip"
$extension[2] = "exe"
$extension[3] = "avi"
$extension[4] = "mp3"
$extension[5] = "wav"
$extension[6] = "pdf"
$extension[7] = "dat"
$extension[8] = "dll"
$extension[9] = "odt"
$dll = DllOpen("user32.dll")
While 1
Sleep ( 50 )
If _IsPressed("01", $dll) Then
if FileExists("url.txt") Then
FileDelete("url.txt")
EndIf
if WinActive("Internet Explorer", "") Then
$aaaa = WinGetTitle("Internet Explorer", "")
$aaaaa = StringLen($aaaa)
$aaaaaa = $aaaaa - 30
$aaaaaaa = StringMid($aaaa, 1, $aaaaaa)
$oIE = _IEAttach ($aaaaaaa)
$oLinks = _IELinkGetCollection ($oIE)
$iNumLinks = @extended
if WinExists($aaaa, "") Then ; Ceci permet d'empêcher un crash du script si on ferme la fenêtre à l'aide de la souris.
For $oLink In $oLinks ; On va tester tous les liens trouvés sur la page.
$extract1 = StringLen($oLink.href)
$extract2 = StringMid( $oLink.href ,$extract1 - 2, 3)
for $extensiontest = 0 to 9 step 1
if $extract2 = $extension[$extensiontest] Then
FileWrite("url.txt", $oLink.href&@crlf)
ExitLoop
EndIf
Next
Next
$aaa = _IEPropertyGet ( $oIE, "statustext" )
$lines = _FileCountLines("url.txt")
for $verifyurl = 1 to $lines step 1
$xxx = FileReadLine("url.txt", $verifyurl)
if $xxx = $aaa Then ; On vérifie la correspondance entre l'url du fichier et la barre de statut d'IE.
for $destroy = 1 to 80 step 1 ; Une fenêtre de chargement Internet Explorer va certainement s'ouvrir pour charger l'url du fichier à télécharger. On va la fermer.
sleep(5)
if WinExists($xxx, "") Then
Winclose($xxx)
ExitLoop
EndIf
Next
MsgBox(0, "Url du fichier à telecharger :", $aaa)
EndIf
Next
EndIf
EndIf
EndIf
WEnd
DllClose($dll)
Désolé si les variables sont carrément mal nommées, si les conditions foisonnent de partout ^^.
Re: [..] Récupérer un lien qui n'est pas une page IE
Posté : mar. 30 juin 2009 16:16
par DJSIR
Marche pas chez moi, avec iE8, le titre des fênetres commencent par le nom suivient du titre du naviguateur. "Autoit Français * Répondre - Windows Internet Explorer"
Il faut revoir ton code.
Re: [..] Récupérer un lien qui n'est pas une page IE
Posté : mar. 30 juin 2009 17:52
par jumby
Fonctionne parfaitement pour moi avec IE6 et IE8.
Re: [..] Récupérer un lien qui n'est pas une page IE
Posté : mar. 30 juin 2009 18:39
par orax
J'ai testé sur
http://www.7-zip.org/ et je crois que ça marche pour le ".exe" mais je ne n'ai aucune msgbox() avec le ".msi" (testé sous IE 8).
Re: [..] Récupérer un lien qui n'est pas une page IE
Posté : mar. 30 juin 2009 18:54
par orax
D'après
http://msdn.microsoft.com/en-us/library ... S.85).aspx
Avec ce code, si j'ai bien compris, $Cancel=True devrait annuler l'affichage de la boîte de dialogue mais ce n'est pas le cas. Je ne sais pas si c'est un problème lié à Autoit ou si je l'ai mal utilisé.
► Afficher le texte
Code : Tout sélectionner
$oIE = ObjCreate("InternetExplorer.Application.1")
$SinkObject = ObjEvent($oIE, "IEEvent_", "DWebBrowserEvents2")
$oIE.Visible = 1
$oIE.RegisterAsDropTarget = 1
$oIE.RegisterAsBrowser = 1
$oIE.Navigate("http://www.7-zip.com/")
While 1
Sleep(30)
WEnd
Func IEEvent_FileDownload($ActiveDocument, $Cancel)
$Cancel=True
ConsoleWrite($ActiveDocument & @CRLF)
EndFunc ;==>IEEvent_FileDownload
Re: [..] Récupérer un lien qui n'est pas une page IE
Posté : mar. 30 juin 2009 19:36
par jumby
Pour rajouter le support de l'extension .msi :
Il faut dresser une liste des extensions supportées par le script et changer la valeur de la boucle :
Local $extension[10] ; Entre crochet le nombre d'extension
$extension[0] = "rar"
$extension[1] = "zip"
$extension[2] = "exe"
$extension[3] = "avi"
$extension[4] = "mp3"
$extension[5] = "wav"
$extension[6] = "pdf"
$extension[7] = "dat"
$extension[8] = "dll"
$extension[9] = "odt"
for $extensiontest = 0 to 9 step 1 ; La valeur maximale de la boucle devra correspondre à la valeur entre crochet du dernier array $extension.
Re: [..] Récupérer un lien qui n'est pas une page IE
Posté : mer. 01 juil. 2009 00:48
par orax
J'ai un peu corrigé mon exemple précédent :
Code : Tout sélectionner
#include <IE.au3>
Global $globale
$oIE = _IECreate("http://www.7-zip.net")
$SinkObject=ObjEvent($oIE,"IEEvent_","DWebBrowserEvents2")
While 1
Sleep(100)
WEnd
Func IEEvent_BeforeNavigate2($a,$b,$c,$d,$e,$f)
$globale=$b
EndFunc
Func IEEvent_FileDownload ($activeDocument ,$cancel )
MsgBox(0,"Téléchargement de...",$globale)
EndFunc
Re: [..] Récupérer un lien qui n'est pas une page IE
Posté : mer. 01 juil. 2009 16:07
par DJSIR
Escusez-moi, testé sur un autre PC, puis re-sur le mien, sa fonctionne, juste la MsgBox s'affiche en fond.
EDIT : Pour les extentions de fichiers, regarder
ici, et bonne chance pour celui qui va les intégrer au script !
