Функция _IEAttach

 ↑  ←  Описание функции


_IEAttach

Присоединеняется к указанному экземпляру Internet Explorer, в котором найдено соответствие строки (на основе выбранного режима).

#include <IE.au3>
_IEAttach($s_string [, $s_mode = "Title" [, $i_instance = 1]])

Параметры

$s_string Строка для поиска (для "встроенных" или "диалоговых окон", используя строку заголовка или дескриптор окна)
$s_mode [необязательный] Режим поиска
Title = (по умолчанию) строка заголовка основного документа
WindowTitle = полная строка заголовка окна (вместо заголовка документа)
URL = строка или url текущей страницы
Text = строка в тексте из body (видимого содержимого) текущей страницы
HTML = строка в html из body текущей страницы
HWND = дескриптор окна браузера
Embedded = строка заголовка или дескриптор окна встроенного элемента
DialogBox = строка заголовка или дескриптор модального / немодального диалогового окна
Instance = параметр $s_string игнорируется, возвращается единственная ссылка на браузер (по номеру экземпляра) из всех доступных экземпляров браузера.
$i_instance [необязательный] Индекс в группе браузеров или встроенных браузеров, соответствующих $s_string и $s_mode, отсчёт от 1. См. примечания.

Возвращаемое значение

Успех:Возвращает переменную объекта, указывающую на объект InternetExplorer для всех, кроме режимов Embedded и DialogBox, которые возвращают объект окна
Ошибка:Возвращает 0 и устанавливает @error
@error:0 ($_IEStatus_Success) = Нет ошибок
5 ($_IEStatus_InvalidValue) = Неверное значение
7 ($_IEStatus_NoMatch) = Нет совпадений
@extended:Содержит номер неверного параметра

Примечания

_IEAttach() provides the "dialogbox" parameter to attach to modal and modeless dialogs created by the browser. It is important to note that not all dialogs created through browser interaction can be attached to and controlled in this way. Many of these dialogs are actually standard windows and can be controlled through the traditional AutoIt window functions. A reliable way to tell the difference between these types of windows is to use the "AutoIt Window Info" tool to examine it -- if the window contains a control called "Internet Explorer_Server" then you can attach to it with this function, if it does not it is a standard window and traditional AutoIt windows functions must be used to control it.

HyperTextApplication (.hta) windows may be attached to using the "embedded" option.

The advanced Window Title selection syntax available to the standard Win* functions may be used in place of a title sub-string for the modes "dialogbox" and "embedded".

Use of "$i_instance" with the "embedded" mode: used to return a reference to a specific instance of a WebBrowser and is particularly useful when more than one exists in a particular window. If you pass a window title in $s_string using embedded mode, only the first window matching that title will be used. If the WebBrowser control you desire is in another window you must pass the HWnd of that window rather than the title, or use the advanced Window Title selection syntax available to the standard Win* functions.

Use of "$i_instance" with all modes other than "embedded": used to return a browser reference from a groups of all windows that match the criteria from $s_string and $s_mode. Instance order for DialogBox mode determined by the order returned by WinList() matching the title. For all other modes the Instance order is determined by the Shell.Windows collection.

"$i_instance" values > 1 are set to 1 and a warning message is displayed when used with "hwnd" mode or with "DialogBox" mode when an HWnd is passed in $s_string.

DialogBox and Embedded modes can be used to attach to standard browser windows, but the object returned is that if the top level Window in the browser and not the InternetExplorer object. Window objects do not offer access to all of the attributes of the InternetExplorer object (e.g. status text, address bar etc.). As well, if you attempt to use a function like _IENavigate() on such an object you may receive COM errors due to the way that IE7 has implemented Tabs. It may be useful to find browser instances in this way, but it is recommended that you immediately use _IEAttach() using one of the other modes and using information that you may have obtained from the Window object in order to get a reference to the associated InternetExplorer object.

См. также

_IECreate, _IECreateEmbedded, _IEQuit

Пример

#include <IE.au3>

; Пример 1 - Присоединяется к браузеру, в заголовке которого "AutoIt", получает его URL
$oIE = _IEAttach("AutoIt")
MsgBox(4096, "URL", _IEPropertyGet($oIE, "locationurl"))


; Пример 2 - Присоединяется к браузеру с текстом "Быстрая рыжая лиса" на его странице
$oIE = _IEAttach("Быстрая рыжая лиса", "text")


; Пример 3 - Присоединяется к элементу браузера, встроенного в другом окне
$oIE = _IEAttach("Заголовок окна", "embedded")


; Пример 4 - Присоединяется к 3-ему элементу браузера, встроенного в другом окне
;               Используйте расширенный синтаксис заголовка окна,
;               чтобы использовать 2-е окносо строкой 'ICQ' в заголовке
$oIE = _IEAttach("[REGEXPTITLE:ICQ; INSTANCE:2]", "embedded", 3)


; Пример 5 - Создаёт массив ссылок на объекты для всех текущих экземпляров браузера
;               Первый элемент массива будет содержать количество найденных экземпляров
Local $aIE[1]
$aIE[0] = 0

$i = 1
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(4096, "Найдено браузеров", "Количество экземпляров браузеров в массиве: " & $aIE[0])