Verknüpft sich mit der angegebenen Instanz des Internet Explorers, die der gesuchte String - abhängig vom Suchmodus - enthält
#include <IE.au3>
_IEAttach ( $sString [, $sMode = "title" [, $iInstance = 1]] )
| $sString | Gesuchter String (für "embedded" oder "dialogbox": Teil des Titels oder HWND des Fensters verwenden) |
| $sMode | [optional] legt den Suchmodus fest: "title" = (Standard) Teil des Titels des Hauptdokuments "windowtitle" = Teil des gesamten Fenstertitels (anstelle des Dokumenttitels) "url" = Teilstring oder URL der aktuellen Internetadresse "text" = Teilstring im Text des Bodys der aktuellen Seite "html" = Teilstring im HTML des Bodys der aktuellen Seite "hwnd" = Handle des Browser-Fensters "embedded" = Teil des Titels oder Handle des Fensters, das das IE-Browserobjekt enthält "dialogbox" = Teil des Titels oder Handle der modalen/nichtmodalen Dialogbox "instance" = $sString wird ignoriert, es wird ein Verweis auf eine existierende Browserinstanz zurückgegeben, deren Instanznummer mit der gesuchten $i_instance übereinstimmt |
| $iInstance | [optional] 1-basierender Index in eine Gruppe von Browsern oder eingebetteter Browserobjekte, die $sString und $sMode entsprechen. Siehe Bemerkungen. |
| Erfolg: | eine Objektvariable als Referenz auf ein IE-Browserobjekt, die Modi Embedded und DialogBox geben jedoch ein Fensterobjekt zurück. |
| Fehler: | Setzt das @error Flag auf ungleich 0 |
| @error: | 5 ($_IEStatus_InvalidValue) - Ungültiger Wert 7 ($_IEStatus_NoMatch) - Keine Übereinstimmung |
| @extended: | Enthält die Nummer des ungültigen Parameters |
_IEAttach() bietet den "dialogbox"-Parameter zur Verknüpfung mit modalen und nichtmodalen Dialogen an, welche vom Browser erstellt werden.
Es ist wichtig festzustellen, dass nicht alle Dialoge, die durch Browser-Interaktion erstellt werden, auf diesem Wege verknüpft und kontrolliert werden können.
Viele dieser Dialoge sind sogar Standardfenster und können mit den üblichen AutoIt-Fensterfunktionen kontrolliert werden.
Ein zuverlässiger Weg, die Unterschiede dieser Fenstertypen herauszufinden, ist die Benutzung des "AutoIt Window Info"-Tools:
Enthält das Fenster ein Control mit dem Namen "Internet Explorer_Server", dann kann diese Funktion darauf angewendet werden,
anderenfalls ist es ein Standardfenster und die üblichen AutoIt-Fensterfunktionen müssen zu dessen Kontrolle verwendet werden.
Die "embedded"-Option kann zur Verknüpfung mit HyperTextApplication-Fenstern (.hta) verwendet werden.
Die erweiterte Fenstertitel-Syntax der Standard-Fensterfunktionen kann anstelle des Titel-Teilstrings für die Modi "dialogbox" und "embedded" verwendet werden.
Benutzung von $i_instance im "embedded"-Modus: gibt eine Referenz auf eine bestimmte Instanz des Browserobjekts zurück und kann nützlich sein,
wenn mehr als ein Browserobjekt in einem Fenster existieren. Wenn ein Fenstertitel in $sString im embedded-Modus übergeben wird,
wird nur das erste zutreffende Fenster benutzt. Sollte sich das benötigte WebBrowser-Control in einem anderen Fenster befinden,
muss statt des Titels das Fenster-Handle übergeben werden, oder es kann die erweiterte Fenstertitel-Syntax der Standard-Fensterfunktionen verwendet werden.
Benutzung von $iInstance in allen anderen Modi (außer "embedded"): gibt eine Referenz auf ein Browserobjekt aus der Gruppe aller Fenster zurück,
auf die die Suchkriterien laut $sString und $sMode zutreffen. Die Instanzenreihenfolge im "dialogbox"-Modus stimmt mit der von WinList() gelieferten Trefferliste überein.
In allen anderen Modi entspricht die Reihenfolge der Shell.Windows Collection.
$iInstance wird auf 1 gesetzt und eine Warnung wird ausgegeben, wenn $iInstance > 1 ist und die Modi "hwnd" oder "dialogbox" mit einem Fensterhandle (HWnd) in $sString benutzt werden.
Die Modi "dialogbox" und Embedded können zur Verknüpfung mit Standard-Browserfenstern benutzt werden,
allerdings ist das zurückgegebene Objekt das Top-Level-Fenster im Browser und nicht das InternetExplorer-Objekt selbst.
Fensterobjekte bieten nicht auf alle Attribute des IE-Objekts Zugriff (z.B. Statustext, Adressleiste etc.).
Wenn also versucht wird, Funktionen wie _IENavigate() auf solch ein Objekt anzuwenden, können COM-Fehler auftreten, aufgrund der Tatsache wie die Tabs in IE7 implementiert sind.
Es mag nützlich sein, Browserinstanzen auf diese Weise zu ermitteln, es wird aber empfohlen, _IEAttach immer mit einem der anderen Modi und den Informationen,
die über das Fensterobjekt bekannt sind, zu benutzen, um die Referenz auf das dazugehörige InternetExplorer-Objekt zu erhalten.
_IECreate, _IECreateEmbedded, _IEQuit
#include <IE.au3>
#include <MsgBoxConstants.au3>
; Verbindet sich mit einem geöffneten Internet Explorer, in dessen Titel "AutoIt" vorkommt und gibt die URL aus.
Local $oIE = _IECreate("www.autoitscript.com")
Local $oIE1 = _IECreate("www.google.com")
$oIE = _IEAttach("AutoIt")
MsgBox($MB_SYSTEMMODAL, "Die URL", _IEPropertyGet($oIE, "locationurl"))
_IEQuit($oIE)
_IEQuit($oIE1)
#include <IE.au3>
; Verbindet sich mit einem geöffneten Internet Explorer, in dessen Hauptdokument der Text "simple HTML page" vorkommt.
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
#include <IE.au3>
;Verbindung zu einem eingebetteten IE-Control herstellen, dessen Fenstertitel "Ein Fenstertitel" enthält.
Local $oIE = _IEAttach("Ein Fenstertitel", "embedded")
ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $oIE = ' & $oIE & @CRLF & '>Error code: ' & @error & ' Extended code: 0x' & Hex(@extended) & @CRLF) ;### Debug Console
#include <IE.au3>
;Verbindet sich mit dem 3. IE-Control, das in ein anderes Fenster eingebettet ist.
;Benutzt die erweiterte Fenstertitelsyntax, um das 2. Fenster mit dem Titel 'ICQ' zu finden.
Local $oIE = _IEAttach("[REGEXPTITLE:ICQ; INSTANCE:2]", "embedded", 3)
MsgBox($MB_SYSTEMMODAL, "Beispiel 4:", _IEPropertyGet($oIE, "locationurl"))
#include <IE.au3>
#include <MsgBoxConstants.au3>
;Füllt ein Array mit den Objektreferenzen aller erzeugten IE-Browser-Instanzen.
;Das Erste Array-Element enthält die Anzahl der gefundenen Instanzen.
Local $aIE[1]
$aIE[0] = 0
Local $i = 1, $oIE
While 1
$oIE = _IEAttach("", "instance", $i)
If @error = $_IEStatus_NoMatch Then ExitLoop
ReDim $aIE[$i + 1]
$aIE[$i] = $oIE
$aIE[0] = $i
$i += 1
WEnd
MsgBox($MB_SYSTEMMODAL, "Gefundene Browser:", "Anzahl der IE-Browser-Instanzen im Array: " & $aIE[0])