Page 1 sur 1

[R] Ouvrir des sites dans la même fenêtre IE

Posté : mar. 24 oct. 2017 11:02
par jpascal
Bonjour,

Désolé pour le titre peu explicite, je vais essayer d'être plus clair.

J'ai créé un programme qui me permet de lancer différent sites avec des actions à effectuer dessus.
Le but est qu'à chaque fois, le site soit lancé dans la même fenêtre. Ceci afin d'éviter de se retrouver avec une multitude de fenêtres ouvertes à l'écran.

Le code se présente comme ceci :

Code : Tout sélectionner

Global $oIE

Func Site1(ByRef $oIE)
...
EndFunc

Func Site2(ByRef $oIE)
...
EndFunc

Func SiteX(ByRef $oIE)
...
EndFunc
Cela fonctionne bien jusqu'au moment où je ferme la fenêtre IE.
Lorsque je veux afficher à nouveau un site, le programme plante ce qui est normal car $oIE n'existe plus.

J'ai tenté de faire au préalable un
If IsObj($oIE) = 0 Then $oIE = _IECreate('')
mais cela ne change rien.

J'imagine que ma méthode n'est pas bonne.
Auriez-vous une meilleure idée pour obtenir le résultat escompté ?

Re: Ouvrir des sites dans la même fenêtre IE

Posté : jeu. 26 oct. 2017 13:55
par jguinch
Tu peux déjà nous poster le code que tu as créé (avec _IECreate), histoire qu'on voit ce qui peut clocher.
Logiquement, avec $oIE = _IECreate() et _IENavigate($oIE, $url) ça doit être bon...

Re: Ouvrir des sites dans la même fenêtre IE  

Posté : jeu. 26 oct. 2017 15:09
par orax
Si tu as utilisé _IENavigate, comme l'a suggéré jguinch, ça devrait simplement afficher une erreur, mais ça ne plante pas tout le script.
jpascal a écrit : mar. 24 oct. 2017 11:02 J'ai tenté de faire au préalable un
If IsObj($oIE) = 0 Then $oIE = _IECreate('')
mais cela ne change rien.
En effet, IsObj($oIE) retourne 1 même quand IE est fermé. :?
Je propose plutôt ce code :

Code : Tout sélectionner

If ObjName($oIE) == "" Then
	ConsoleWrite("IE a été fermé." & @CRLF)
EndIf
Mais il me semble plus judicieux de gérer l'éventuelle erreur après _IENavigate :

Code : Tout sélectionner

#include <IE.au3>
_IENavigate($oIE, "autoitscript.fr")
If @error Then
	If @error = $_IEStatus_InvalidObjectType Then
		ConsoleWrite("IE a été fermé." & @CRLF)
		$oIE = _IECreate("autoitscript.fr")
	Else
		ConsoleWriteError("Erreur " & @error & @CRLF)
	EndIf
EndIf

Re: Ouvrir des sites dans la même fenêtre IE

Posté : lun. 30 oct. 2017 12:37
par jpascal
Bonjour,

C'est exactement ce que je cherchais.
La commande fonctionne à merveille.

Voici le genre d'erreur qui faisait planter mon script.
J'aurais dû gérer les erreurs de _IELinkGetCollection(). Shame on me !

Code : Tout sélectionner

	Local $oLinks = _IELinkGetCollection($oIE)
	For $oLink In $oLinks
Merci à vous. :)