[Résolu] Migration vers w11 : mon script ne marche plus

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
fredmame
Niveau 3
Niveau 3
Messages : 39
Enregistré le : mar. 05 févr. 2019 22:43
Status : Hors ligne

[Résolu] Migration vers w11 : mon script ne marche plus

#1

Message par fredmame »

Bonjour à tous,

j'ai crée un script (avec l'aide il y a quelques années de membres de ce forum) qui marche parfaitement jusqu'à win 10 (encore testé ce matin)
Je viens actuellement de passer à W11 sur un autre PC et voila que mon script ne marche plus.
Je pense que c'est lié à l'abandon d'IE par Microsoft.
J'ai un message d'erreur "LINE 4890 error: the requested action with this object has failed"
je n'ai pas autant de lignes dans mon code, donc je pense que ca vient d'un fichier "include" mais lequel et pourquoi...

J'ai testé une approche (lue sur le forum ) qui est de forcer les liens IE à NE PAS s'ouvrir dans Edge mais cela ne change rien.
le navigateur a bien l'icone IE mais j'ai toujours l'erreur "line 4890" et enfin j'ai mon msgbox erreur.

voici par exemple la 1ere fonction que j'appelle dans mon script
func categories()

HttpSetUserAgent("MMozilla/5.0 (Windows NT 10.0; Win64; x64; rv:94.0) Gecko/20100101 Firefox/94.0")
$Label3 = GUICtrlCreateLabel("Pas de connexion2..",  64, 38, 90, 25)
HttpSetUserAgent("MMozilla/5.0 (Windows NT 10.0; Win64; x64; rv:94.0) Gecko/20100101 Firefox/94.0")
$oIE = _IECreate ( "https://www.progettosnaps.net/catver", Default, 0,1,0)
_IELoadWait($oIE,20,30*1000)
If @error Then
   msgbox(00,"Erreur","erreur de chargement catégories")
EndIf

$oLinks = _IELinkGetCollection($oIE)
For $oLink In $oLinks
    If StringRight ( $oLink.href, 4 ) = ".zip" Then
  $split = StringSplit ( $oLink.href, "/" )
Local $versionini=StringRight(stringtrimright($oLink.href,4),10)

GuiCtrlSetData($Label3,"Catégories" & @CRLF & $versionini )

    Else
        ContinueLoop
    EndIf
Next
_IEQuit($oIE)

EndFunc

Ou bien tout simplement ce code tout bête ne fonctionne pas sous windows 11 alors que sous windows 10 pas de probleme...
je ne comprends pas ca sort une erreur "line 1016"
#include <IE.au3>
#include <MsgBoxConstants.au3>

Local $oIE = _IECreate( "google.fr")
Local $oLinks = _IELinkGetCollection($oIE)
Local $iNumLinks = @extended

Local $sTxt = $iNumLinks & " links found" & @CRLF & @CRLF
For $oLink In $oLinks
    $sTxt &= $oLink.href & @CRLF
Next
MsgBox($MB_SYSTEMMODAL, "Link Info", $sTxt)
Je remercie les pro d'Autoit de m'aider à migrer mon programme car là je suis décu.

Si necessaire je peux mettre tout le code mais ca représente tout de meme 2255 lignes !

Fred.
Modifié en dernier par fredmame le ven. 19 nov. 2021 09:23, 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: Migration vers w11 : mon script ne marche plus

#2

Message par jguinch »

Je n'ai pas de Windows 11 sous la main, mais Microsoft a annoncé que Internet Explorer n'était plus de la partie, donc les fonctions _IE* ne fonctionneront pas (que ce soit avec AutoIt ou un autre langage).
L'automatisation du navigateur devra passer par autre chose, comme webdriver

Sinon, par rapport au script que tu as posté, il n'y a à priori pas besoin d'automatiser le navigateur, mais plutôt récupérer le code source de la page et rechercher le lien du fichier zip.
Une possibilité :
$sUrl = "https://www.progettosnaps.net/catver/"

$oHTTP = ObjCreate("winhttp.winhttprequest.5.1")
$oHTTP.Open("GET", $sUrl, False)
$oHTTP.Send()
If $oHTTP.Status = 200 Then
   $sReceived = $oHTTP.ResponseText
   $aFile = StringRegExp($sReceived, 'file=(.+?\.zip)">', 1)
   MsgBox(0, "", $aFile[0])
EndIf
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
fredmame
Niveau 3
Niveau 3
Messages : 39
Enregistré le : mar. 05 févr. 2019 22:43
Status : Hors ligne

Re: Migration vers w11 : mon script ne marche plus

#3

Message par fredmame »

Merci de ton code qui est très interressant comme approche.
Etant donné que dans mon programme j'ai beaucoup de fonction IE, je vais m'inspirer de ton code et je ferais un retour d'ici quelques jours.
Grand merci.
Fred.


EDIT:
et bien voila des nouvelles : grace à ton approche différente de la récuperation avec une expression reguliere j'ai pu supprimer tout ce qui était à base d'IE et mon code est de nouveau pleinement fonctionnel !
Encore merci.
Sujet résolu.
Répondre