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

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
jpascal
Niveau 6
Niveau 6
Messages : 226
Enregistré le : jeu. 16 oct. 2008 16:21
Status : Hors ligne

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

#1

Message 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é ?
Modifié en dernier par jpascal le lun. 30 oct. 2017 12:42, modifié 1 fois.
AutoIt 3.3.16.1 - AutoIt3Wrapper 21.316.1639.1
Avatar du membre
jguinch
Modérateur
Modérateur
Messages : 2511
Enregistré le : lun. 14 févr. 2011 22:12
Status : Hors ligne

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

#2

Message 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...
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
Avatar du membre
orax
Modérateur
Modérateur
Messages : 1479
Enregistré le : lun. 23 mars 2009 04:50
Localisation : ::1
Status : Hors ligne

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

#3

Message 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
De petits détails peuvent faire toute la différence. — Quand la boule de neige commence à rouler… poussez-la. (Columbo)
jpascal
Niveau 6
Niveau 6
Messages : 226
Enregistré le : jeu. 16 oct. 2008 16:21
Status : Hors ligne

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

#4

Message 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. :)
AutoIt 3.3.16.1 - AutoIt3Wrapper 21.316.1639.1
Répondre