Page 1 sur 1

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

Posté : dim. 14 nov. 2021 09:25
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.

Re: Migration vers w11 : mon script ne marche plus

Posté : lun. 15 nov. 2021 23:35
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

Re: Migration vers w11 : mon script ne marche plus

Posté : mar. 16 nov. 2021 17:34
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.