UDF > IE >


_IEAttach

Attache, à l'instance spécifiée d'Internet Explorer, la recherche de chaîne selon un mode spécifié

#include <IE.au3>
_IEAttach ( $sString [, $sMode = "title" [, $iInstance = 1]] )

Paramètres

$sString Chaîne à rechercher (pour les modes "embedded" ou "dialogbox", utilisez la sous-chaîne Title ou le HWND de la fenêtre)
$sMode [optionnel] Spécifie le mode de recherche
    "titre" = (par défaut) sous-chaîne du titre du document principal
    "windowtitle" = sous-chaîne du titre complet de la fenêtre (au lieu du titre du document)
    "url" = sous-chaîne ou URL de la page actuelle
    "texte" = sous-chaîne dans le texte du corps de la page courante
    "html" = sous-chaîne en html du corps de la page courante
    "hwnd" = handle de la fenêtre du navigateur
    "embedded" = sous-chaîne du titre ou handle de la fenêtre contenant le contrôle
    "dialogbox" = sous-chaîne ou handle de la boite de dialogue modale ou non modale
    "instance" = $sString est ignorée, une référence au navigateur est retournée (en faisant correspondre le numéro d'instance) à partir de toutes les instances disponibles du navigateur
$iInstance [optionnel] Index, à partir de 1, dans le groupe des navigateurs ou des navigateurs embarqués qui doit correspondre à $sChaine et $SMODE. Voir Remarques.

Valeur de retour

Succès: Retourne une variable objet pointant sur l'objet InternetExplorer pour tous les modes, sauf Embedded et DialogBox qui retournent un objet Window.
Échec: Définit @error <> 0.
@error: 5 ($_IEStatus_InvalidValue) - Valeur non valide
7 ($_IEStatus_NoMatch) - Pas de correspondance trouvée
@extended: Contient le nombre de paramètres invalides

Remarques

_IEAttach() fournit le paramètre "dialogbox" pour attacher les boîtes de dialogue modales et non modales créés par le navigateur.
Il est important de noter que ce n'est pas toutes les boîtes de dialogue créées par interaction avec le navigateur qui peuvent être attachés et contrôlés de cette façon.
Beaucoup de ces dialogues sont en fait des fenêtres standard et peuvent être contrôlés par les fonctions traditionnelles des fenêtres de AutoIt. Un moyen fiable de faire la différence entre ces types de fenêtres est d'utiliser l'outil "AutoIt Window Info" pour l'examiner - si la fenêtre contient un contrôle appelé "Explorer_Server Internet", alors vous pouvez l'attacher à cette fenêtre avec cette fonction, si elle n'est pas une fenêtre standard, les fonctions des fenêtres AutoIt traditionnelles doivent être utilisées pour la contrôler.

Les fenêtres HyperTextApplication (.hta ) peuvent être attachées à l'aide de l'option "embedded".

La syntaxe disponible pour le titre de la fenêtre avancée pour les functions standards Win* peut être utilisées à la place d'une sous-chaîne de titre pour le mode "dialogbox" et "embedded".

Utilisez $iInstance avec le mode "embedded" pour retourner une référence sur une instance spécifique d'un navigateur Web. C'est particulièrement utile lorsque plusieurs navigateurs existent dans une fenêtre particulière.
Si vous passez le titre de la fenêtre dans $sChaine en utilisant le mode embedded, seule la première fenêtre qui correspondra à ce titre sera utilisée.
Si le contrôle WebBrowser que vous désirez est dans une autre fenêtre, vous devez passer le handle de cette fenêtre plutôt que le titre, ou utiliser la syntaxe disponible d'un titre de fenêtre avancé pour les fonctions standards Win*.

L'utilisation de $iInstance avec tous les modes autres que "embedded" permet de retourner une référence sur le navigateur à partir d'un groupe de toutes les fenêtres qui correspondent aux critères de $sChaine et $SMODE.
L'ordre des instances pour le mode "dialogbox" est déterminé par l'ordre retourné par WinList() en faisant correspondre le titre.
Pour tous les autres modes, l'ordre des instances est déterminée par la collection Shell.Windows.

Les valeurs de $iInstance > 1 sont ramenées à 1 et un message d'avertissement est affiché lorsqu'il est utilisé en mode "hwnd" ou en mode "dialogbox" quand un HWnd est passée dans $sChaine.

Les modes "dialogbox" et "embedded" peuvent être utilisés pour attacher des fenêtres du navigateur standard, mais l'objet retourné est la fenêtre de plus haut niveau du navigateur et non l'objet InternetExplorer.
Les objets Window n'offrent pas d'accès à tous les attributs de l'objet InternetExplorer (par exemple "status text", "address bar", etc... ).
En outre, si vous essayez d'utiliser une fonction comme _IENavigate() sur un tel objet, vous pouvez recevoir des erreurs COM en raison de la façon dont IE7 a implémenté les onglets.
Il peut être utile de trouver les instances du navigateur de cette manière, mais il est recommandé d'utiliser immédiatement _IEAttach() en utilisant un autre mode et en utilisant les informations que vous avez obtenu à partir de l'objet Window pour obtenir une référence à l'objet InternetExplorer associé.

En relation

_IECreate, _IECreateEmbedded, _IEQuit

Exemple

Exemple 1

; Recherche une page avec "AutoIt" dans son titre, affiche l'URL

#include <IE.au3>
#include <MsgBoxConstants.au3>

Local $oIE = _IECreate("www.autoitscript.com")
Local $oIE1 = _IECreate("www.google.com")

$oIE = _IEAttach("AutoIt")
MsgBox($MB_SYSTEMMODAL, "The URL", _IEPropertyGet($oIE, "locationurl"))

_IEQuit($oIE)
_IEQuit($oIE1)

Exemple 2

; Recherche une page avec "simple HTML page"
; dans le texte du document de niveau le plus haut

#include <IE.au3>

Local $oIE_basic = _IE_Example("basic")

Local $oIE = _IEAttach("simple HTML page", "text")
ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $oIE = ' & $oIE & @CRLF & '>Error code: ' & @error & '    Extended code: 0x' & Hex(@extended) & @CRLF) ; ### Debug Console

Exemple 3

; Recherche un contrôle de page embarqué dans une autre fenêtre

#include <IE.au3>

Local $oIE = _IEAttach("A Window Title", "embedded")
ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $oIE = ' & $oIE & @CRLF & '>Error code: ' & @error & '    Extended code: 0x' & Hex(@extended) & @CRLF) ; ### Debug Console

Exemple 4

; Recherche le 3-ième contrôle de page embarqué dans une autre fenêtre
; Utilise la syntaxe avancée du titre de fenêtre pour utiliser la 2nd fenêtre
; contenant 'ICQ' dans son titre

#include <IE.au3>

Local $oIE = _IEAttach("[REGEXPTITLE:ICQ; INSTANCE:2]", "embedded", 3)

Exemple 5

; Crée un tableau de références d'objet sur toutes les instances en cours du navigateur
; Le premier élément du tableau contiendra le nombre d'instances trouvées

#include <IE.au3>
#include <MsgBoxConstants.au3>

Local $aIE[1]
$aIE[0] = 0

Local $i = 1, $oIE = _IEAttach("", "instance", 1)

While @error <> $_IEStatus_NoMatch
    ReDim $aIE[$i + 1]
    $aIE[$i] = $oIE
    $aIE[0] = $i
    $i += 1
    $oIE = _IEAttach("", "instance", $i)
WEnd

MsgBox($MB_SYSTEMMODAL, "Naviguateur trouvé", "Nombre d'instances du navigateur dans le tableau: " & $aIE[0])