Что нового

[IE] Работа скрипта с браузером определенного окна/процесса

iwak

Новичок
Сообщения
28
Репутация
0
Приветствую.

Возможно ли реализовать следующую задачу?

Например, есть 2 скрипта, каждый из которых открывает 2 разных окна браузера, затем каждый скрипт работает только со своим окном браузера. Т.е. при использовании функции _IEAttach в первом скрипте, он не будет присоединяться ко второму окну браузера, даже если у них совпадают title, url и т.д.

Стандартный _IEAttach("", "instance" $i) наверное не подойдет, поскольку в каждом окне браузера будет открываться по несколько вкладок.

Скриншот прилагается.
 

Вложения

  • 1.jpg
    1.jpg
    118.7 КБ · Просмотры: 20

inververs

AutoIT Гуру
Сообщения
2,135
Репутация
465
Можно, нужно знать hwnd каждого окна. Тогда с помощью _IEAttach($hwnd, 'hwnd', $i) можно подключится к вкладке нужного окна.
$hwnd узнаете так:
Код:
$oIe = _IECreate('about:blank')
$hwnd = _IEPropertyGet($oIe, 'hwnd')
 
Автор
I

iwak

Новичок
Сообщения
28
Репутация
0
Спасибо за ваш ответ.

А можно ли подключиться к вкладке не по номеру, а например, по Title или URL?

Что-то типа этого:

Код:
$hwnd = 0x001F0530
$oIE = _IEAttach($hwnd, "url", "google.ru")

;or

$hwnd = 0x001F0530
$oIE = _IEAttach($hwnd, "title", "Google")
 

inververs

AutoIT Гуру
Сообщения
2,135
Репутация
465
iwak [?]
а например, по Title или URL?
Вроде как стандартной функцией нельзя. Но посмотрите как сделана внутри _IeAttach. Там весь смысл в этом коде:
Код:
Local $oShell = ObjCreate("Shell.Application")
Local $oShellWindows = $oShell.Windows()
For $oWindow In $oShellWindows
	ConsoleWrite($oWindow.hwnd & @CRLF)
	ConsoleWrite($oWindow.locationurl & @CRLF)
	ConsoleWrite($oWindow.document.title & @CRLF)
Next

Из всего этого соберите себе свою собственную функцию. Скажем на вход будете передавать hwnd и title, а в самой функции скомбинируйте что то типа такого:
Код:
Func _myAttach($hwnd, $title)
Local $oShell = ObjCreate("Shell.Application")
Local $oShellWindows = $oShell.Windows()
For $oWindow In $oShellWindows
;~ 	ConsoleWrite($oWindow.hwnd & @CRLF)
;~ 	ConsoleWrite($oWindow.locationurl & @CRLF)
;~ 	ConsoleWrite($oWindow.document.title & @CRLF)
	If $oWindow.hwnd = $hwnd And $oWindow.document.title = $title Then
		ConsoleWrite('Совпадение найдено' & @CRLF)
		Return $oWindow
	EndIf



Next
ConsoleWrite('! не найдено' & @CRLF)
EndFunc
 
Автор
I

iwak

Новичок
Сообщения
28
Репутация
0
К сожалению так и не понял как эту функцию использовать. (

Пытаюсь подключиться ко второй вкладке, но вместо этого подключается к первой вкладке.

Как правильно использовать этот код? :(

Код:
#include <ie.au3>

$oIE = _IECreate('bing.com')

$oIE.Navigate2('google.ru', 2048)
sleep(4000)
$hwnd = _IEPropertyGet($oie, 'hwnd')
sleep(100)
$oie = _IEAttach($hwnd, 'hwnd', 2)
msgbox(0, '', $oie.document.title)


Чтобы через скрипт была возможность подключаться на любую по счету вкладку (именно по её номеру), но только в своем отдельном окне браузера (hwnd?). (как описал в первом посте).
 
Верх