Что нового

Определение активной вкладки браузера и получение текста с оной

AngrySpoon

Новичок
Сообщения
15
Репутация
0
Добрый день!
Интересует сабж
Дело в том, что в нескольких вкладках IE открыт один сайт (заголовок одинаковый у всех), но на разных страницах этого сайта. Необходимо найти именно активную вкладку, потому как текст поиска может повторяться на любой из вкладок.
Была попытка сделать так:
Код:
$oIE = _IEAttach("Заголовок окна", "instance")
$str=_IEbodyReadtext($oIE)

Но тогда перехватывается весь браузер, а не только активная вкладка.
Подскажите, каким образом определить активную вкладку?
 

WSWR

AutoIT Гуру
Сообщения
941
Репутация
363
AngrySpoon

Вроде так работает:
Код:
#include <DDEML.au3>
#include <DDEMLClient.au3>
#include <IE.au3>

$sUrl = _URL()
$oIE = _IEAttach($sUrl, 'URL')

$str =_IEbodyReadtext($oIE)

ConsoleWrite($str & @LF)

Func _URL()
	$szRes = StringRegExpReplace(_DDEMLClient_RequestString('IExplore', 'WWW_GetWindowInfo', '0xFFFFFFFF', $CF_TEXT), '\"\,\"(.*)|("{1})', '')
	Return $szRes
EndFunc   ;==>_URL



Отсюда
http://www.autoitscript.com/forum/index.php?app=downloads&module=display&section=download&do=confirm_download&id=174

DDEML.au3 и DDEMLClient.au3 из au3_ddeml_1.5.4.zip в папку со скриптом или в папку Include в папке Autoit

Хотя, наверно, можно и проще - получить текст из Edit активного окна IE )
 

C2H5OH

AutoIT Гуру
Сообщения
1,473
Репутация
333
Код:
#include <IE.au3>
Sleep(3000)     ; это чтобы успеть сделать активной нужную вкладку IE 
$i = 1
While 1
    $oIE = _IEAttach ("", "instance", $i)
    If @error = $_IEStatus_NoMatch Then ExitLoop
    $url = _IEPropertyGet($oIE,"locationurl")
    If WinActive("",$url) Then MsgBox(0, "Browsers Found", $url)
    $i+=1
WEnd

MsgBox(0, "Browsers Not Found", ":(")


Только долго, на мой взгляд...
 
Автор
A

AngrySpoon

Новичок
Сообщения
15
Репутация
0
WSWR, пока нет возможности проверить. Сразу возникает вопрос: url он берет из активной вкладки? У меня url постоянно меняется и весьма труднопроизносим))

C2H5OH, справку я читал, и знать количество вкладок мне не обязательно
 

WSWR

AutoIT Гуру
Сообщения
941
Репутация
363
AngrySpoon

Да, из вкладки, которая видима в данный момент

Скорее всего, можно и так:
Код:
#include <IE.au3>

$sUrl = ControlGetText('[Class:IEFrame]', '', '[CLASS:Edit; INSTANCE:1]')
$oIE = _IEAttach($sUrl, 'URL')

$str =_IEbodyReadtext($oIE)

ConsoleWrite($str & @LF)
 

C2H5OH

AutoIT Гуру
Сообщения
1,473
Репутация
333
AngrySpoon, ты скрипт запустил? Где-нибудь слова "количество вкладок" увидел?
 
Автор
A

AngrySpoon

Новичок
Сообщения
15
Репутация
0
C2H5OH, а чем мне поможет то, что я найду вкладки браузера? Я же написал - нужна активная вкладка, и с нее нужно получить html


Добавлено:
Сообщение автоматически объединено:

C2H5OH, прошу прощения, не обратил внимания на if winactive
Раскаиваюсь в грубом ответе, спасибо большое за помощь. И еще раз прошу прощения
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
Честно говоря, я не совсем понял, что вам нужно.
В скрипте введите искомое слово, фразу и запустите скрипт.
Переключаясь между вкладками, нажимайте SHIFT+A

Код:
$sText = 'Строка поиска!'
HotKeySet('+a', '_SearchText')
HotKeySet('{ESC}', '_Exit')

While 1
	Sleep(250)
WEnd

Func _SearchText()
	
	$o_IE = _IEAttach(WinGetTitle(WinGetHandle('[CLASS:IEFrame]')), 'WindowTitle')
	$s_BodyText =_IEbodyReadtext($o_IE)
	If StringInStr($s_BodyText, $sText) Then
		ConsoleWrite('Совпадение!' & @CRLF)
	Else
		ConsoleWrite('Нет совпадения!' & @CRLF)
	EndIf
EndFunc

Func _Exit()
	Exit
EndFunc
 
Автор
A

AngrySpoon

Новичок
Сообщения
15
Репутация
0
WSWR, спасибо огромное, работает!
Тема исчерпана)
 
Верх