Что нового

Получить контроль над новым окном IE (какой способ самый эффективный?)

Ocago

Новичок
Сообщения
35
Репутация
0
Всем привет,
Спасибо всем, кто неоднократно помогал в освоении, надеюсь и в этом вопросе выручите.

Как получить контроль над вновь созданным окном в IE (например при переходе по ссылке с тэгом target=_blank). Фокус как-то перекидывать на это окно или получать его параметры, а потом применять _IEAttach (наверное)?
Вот пример простенький:
Код:
#include <IE.au3>

$sURL = 'http://www.google.ru/search?hl=ru&newwindow=1&q=autoit+script&aq=f&aqi=g6&aql=&oq=&gs_rfai='

$oIE = _IECreate($sURL)
Sleep(1000)
_IELinkClickByText ($oIE, "Downloads")
Sleep(1000)
_IELinkClickByText ($oIE, "Announcements and Site News")


Естественно второй метод (_IELinkClickByText ($oIE, "Announcements and Site News")) не сработает, так как $oIE - относится к первому окну.
Как лучше поступить?
 

madmasles

Модератор
Глобальный модератор
Сообщения
7 790
Репутация
2 319
Ocago
Можно, наверное, так сделать:
Код:
#include <IE.au3>

$sURL = 'http://www.google.ru/search?hl=ru&newwindow=1&q=autoit+script&aq=f&aqi=g6&aql=&oq=&gs_rfai='

$oIE = _IECreate($sURL)
_IELinkClickByText($oIE, "Downloads")
_IEQuit($oIE)
$oIE = _IEAttach("[CLASS:IEFrame]", 'Instance')
_IELoadWait($oIE)
_IELinkClickByText ($oIE, "Announcements and Site News", 0, 0)
Exit
 
Автор
O

Ocago

Новичок
Сообщения
35
Репутация
0
Понял, спасибо. Как всегда, точный пример :smile:
Упустил я из виду 'Instance'.

Тут, я понимаю, передастся управление из первого окна во второе?
Так? (первое окно уже будет не управляемо).
А вот если ещё окно откроется, следующее - как быть?
Или сразу из первого 2-3 окна открыть - как их анализировать последовательно?
 
Автор
O

Ocago

Новичок
Сообщения
35
Репутация
0
хмм.. а не получается найти на новой странице строку :-\
пишет
Код:
IE.au3 (841) : ==> The requested action with this object has failed.:
Local $found = 0, $linktext, $links = $o_object.document.links
Local $found = 0, $linktext, $links = $o_object.document^ ERROR
Т.е. принцип понятен - убить предыдущее окно и прикрепиться к новому.
Но, почему-то _IELinkClickByText ($oIE, "Announcements and Site News", 0, 0) - не срабатывает, насколько я понял.
 
Автор
O

Ocago

Новичок
Сообщения
35
Репутация
0
Вот примерчик с _IEAttach и массивом для подсчёта открытых окон браузера:
Код:
; *******************************************************
; Example 5 - Create an array of object references to all current browser instances
;               The first array element will contain the number of instances found
; *******************************************************
;
#include <IE.au3>

Dim $aIE[1]

$sURL = 'http://www.google.ru/search?hl=ru&newwindow=1&q=autoit+script&aq=f&aqi=g6&aql=&oq=&gs_rfai='
$oIE1 = _IECreate($sURL)
_IELinkClickByText($oIE1, "Downloads")

$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(0, "Browsers Found", "Number of browser instances in the array: " & $aIE[0])

_IEQuit($oIE1)


Окна считает адекватно вроде.. Но как подключится и этими окнами управлять? Даже закрыть просто новое окно не получается :blink:
 
Верх