Что нового

[Сеть, интернет] Определить активную вкладку IE8

AlexVong

Новичок
Сообщения
112
Репутация
1
Прошу помощи. Для подключения к IE в скрипте использую следующий код ...
Код:
$zIE=_IEAttach('КОМПЛЕКС "РУНО"')
$oFrame = _IEFrameGetObjByName ($zIE, "main")

Но такой вариант работает тоько с первой вкладкой, независимо от того что активная на данный момент вторая, третья и т.д. Особиности - у всех вкладок одно и тоже название - КОМПЛЕКС "РУНО", и один и тот же адрес. Как сделать чтобы скрипт отрабатывал имено на активной на данный момент вкладке?
 

inververs

AutoIT Гуру
Сообщения
2,135
Репутация
465
Для этого есть _IEAttach и параметр embedded
Но применение имеет свои особенности:
Вы должны знать hwnd или часть title того бразера, активную вкладку которого вы собираетесь получить, т.к может быть что браузеров запущено несколько, и функция естественно сама не выберет где искать.

Получить hwnd не проблема, тем более функция WinGetHandle поддерживает достаточный гибкий синтаксис, где можно задать, часть названия, класса, положения и размера окна. См. справку.

Если же точно знаете, что браузер один, то hwnd его определяете так:
Код:
$hWnd = WinGetHandle('[CLASS:IEFrame]')


Ну а дальше, дело техники:
Код:
#include <IE.au3>
$hWnd = WinGetHandle('[CLASS:IEFrame]')
$oIE=_IEAttach($hWnd,'embedded',1)
ConsoleWrite(_IEPropertyGet($oIE,'locationURL') & @LF)
 
Автор
A

AlexVong

Новичок
Сообщения
112
Репутация
1
inververs
hwnd получает без проблем.
Но на -
Код:
$oIE=_IEAttach($hWnd,'embedded',1)

Error:the requested action with this object has failed
 

inververs

AutoIT Гуру
Сообщения
2,135
Репутация
465
AlexVong
Попробуйте с последней бетой.
 
Автор
A

AlexVong

Новичок
Сообщения
112
Репутация
1
inververs
Ошибка ушла, но на всех вкладках
Код:
$oIE=_IEAttach($hWnd,'embedded',1)
ConsoleWrite(_IEPropertyGet($oIE,'locationURL') & @LF)
- возвращает "0"
 

inververs

AutoIT Гуру
Сообщения
2,135
Репутация
465
у вас x64 IE?, если так, попробуйте в x32 версии
 

inververs

AutoIT Гуру
Сообщения
2,135
Репутация
465
Странно, оошибок не должно быть.
Попробуйте тогда на прямую.
Код:
#include <IE.au3>
$hWnd = WinGetHandle('[CLASS:IEFrame]')
$hCtrl = ControlGetHandle($hWnd, "", "[CLASS:Internet Explorer_Server; INSTANCE:1]")
If Not IsHWnd($hCtrl) Then Exit MsgBox(0,0,'Нет окон IE')
$oIE = __IEControlGetObjFromHWND($hCtrl)
ConsoleWrite(ObjName($oIE) & @LF)
ConsoleWrite(_IEPropertyGet($oIE,'locationurl') & @LF)
 
Автор
A

AlexVong

Новичок
Сообщения
112
Репутация
1
Ничего не помогает... перерыл кучу форумов ни где не могу найти ответ на свой вопрос :'(
Если бы во вкладках были разные адреса, еще как то можно. А так существует несколько вкладок с одинаковым названием и одинаковым url - за счет того что страницы состоят из нескольких фреймов и фрейм с title у всех одинаковый. Может есть еще возможность как обратиться к активной вкладке?
 

WSWR

AutoIT Гуру
Сообщения
941
Репутация
363
AlexVong
как обратиться к активной вкладке?

У меня с активной вкладкой работает такой код:
Код:
#include <IE.au3>
#include <Array.au3>

$aList = WinList('[CLASS:IEFrame]', '')
;_ArrayDisplay($aList)

If IsArray($aList) Then
	$oIE = _IEAttach($aList[1][1], 'embedded', 1)
	ConsoleWrite(_IEPropertyGet($oIE, 'locationURL') & @LF)
	$oIE.document.body.style.zoom = 0.5 ; установка масштаба для проверки
EndIf
 
Автор
A

AlexVong

Новичок
Сообщения
112
Репутация
1
Почемуто возвращает 0
В IE открыто две вкладки - google и mail.ru
autoit-v3.3.9.21
Код:
>"C:\Program Files\AutoIt3\SciTE\..\autoit3.exe" /ErrorStdOut "C:\Documents and Settings\AlexVong\Рабочий стол\AutoIt v3 Script (10).au3"    
--> IE.au3 T3.0-1 Warning from function _IEAttach, $_IEStatus_NoMatch (0)
--> IE.au3 T3.0-1 Error from function _IEPropertyGet, $_IEStatus_InvalidDataType (0)
0
"C:\Documents and Settings\AlexVong\??????? ????\AutoIt v3 Script (10).au3" (22) : ==> Variable must be of type "Object".:
$oIE.document.body.style.zoom = 0.5
$oIE^ ERROR
>Exit code: 1    Time: 0.398

autoit-v3.3.8.1
Код:
>"C:\Program Files\AutoIt3\SciTE\AutoIt3Wrapper\AutoIt3Wrapper.exe" /run /prod /ErrorStdOut /in "C:\Documents and Settings\AlexVong\Рабочий стол\AutoIt v3 Script (10).au3" /UserParams    
+>18:42:42 Starting AutoIt3Wrapper v.2.1.0.33    Environment(Language:0419  Keyboard:00000419  OS:WIN_XP/Service Pack 3  CPU:X64 OS:X86)
>Running AU3Check (1.54.22.0)  from:C:\Program Files\AutoIt3
+>18:42:42 AU3Check ended.rc:0
>Running:(3.3.8.1):C:\Program Files\AutoIt3\autoit3.exe "C:\Documents and Settings\AlexVong\Рабочий стол\AutoIt v3 Script (10).au3"    
--> Press Ctrl+Alt+F5 to Restart or Ctrl+Break to Stop
C:\Program Files\AutoIt3\Include\IE.au3 (3633) : ==> The requested action with this object has failed.:
Return $oIE.Document.parentwindow
Return $oIE.Document^ ERROR
->18:42:42 AutoIT3.exe ended.rc:1
>Exit code: 1    Time: 2.386
 

WSWR

AutoIT Гуру
Сообщения
941
Репутация
363
AlexVong
Возможно, дело в системе и каких-то настройках - у меня Win 7
 
Автор
A

AlexVong

Новичок
Сообщения
112
Репутация
1
Ок. Спасибо. Дома XP. Попробую на работе - там 7-ка.

Точно на домашнем ПК чтот с настройками. На работе на 7-ке и на хр пошло на ура! Спасибо!
 
Верх