Что нового

[Сеть, интернет] _IECreate отключение мультимедиа

Redline

AutoIT Гуру
Сообщения
506
Репутация
369
Ищу способ открыть ссылку через
Код:
_IECreate()
; или
ObjCreate('InternetExplorer.Application')

, так что бы в созданное окно не загружалась мультимедиа(картинки, видео, флэш-анимация и т.п.). Нужен способ в обход копания в настройках IE и реестра.
Т.е.:
Есть обычный IE - им лазим по сайтам и видим картинки.
Второй IE запускаем через AutoIt, так что бы в него не грузилась мультимедиа(для ускорения обработки данных).
 

Garrett

Модератор
Локальный модератор
Сообщения
3 999
Репутация
964
Redline
Если вам нужен только текст, то можно использовать
Код:
_IEBodyReadText()

Можно ещё так сделать :smile:
Код:
#include <IE.au3>
$oIE = _IECreate("http://www.rian.ru/")
$oElements = _IETagNameAllGetCollection($oIE)
For $oElement In $oElements
    If $oElement.tagname = "IMG" Or $oElement.tagname = "embed" Or $oElement.tagname = "object" Then
		_IEPropertySet($oElement, "outerhtml", "")
	EndIf
	If $oElement.tagname = "iframe" Then
		_IEPropertySet($oElement, "outertext", "")
	EndIf
Nex

Можно ещё с CSS поработать, если необходима. ;)
 
Автор
Redline

Redline

AutoIT Гуру
Сообщения
506
Репутация
369
Garrett
Понятно, что можно убрать тэги уже после окончания загрузки страницы, а вот как такое сделать еще до перехода на страницу - чтобы не качать картинки, а открыть "каркас" страницы ;).
В настройках IE (сервис-дополнительно-мультимедиа-[галка отображать рисунки]) можно так сделать. По идее страница загрузится быстрее(или я ошибаюсь). А нужно включать эту опцию для конкретных страниц, открываемых через _IECreate или ObjCreate.
 

Vlasssov

Осваивающий
Сообщения
428
Репутация
25
А что вам потом надо делать в IE?
Я вот пробовал загрузить функцией inetget, а потом открывал локальный файл.
Естественно проблема в докачке
1) css
2) картинок внешних
3) js
 
Автор
Redline

Redline

AutoIT Гуру
Сообщения
506
Репутация
369
Vlasssov [?]
А что вам потом надо делать в IE?Я вот пробовал загрузить функцией inetget, а потом открывал локальный файл.
После открытия нужно получить ссылки, с определенным текстом внутри href, а после этого идет переход по очереди по этим ссылкам и получение текста через innerText у определенных элементов(отбор по ClassName & id) - div, p, h1 и т.п.
Это все реализовано, но медленно работает.
Я вот пробовал загрузить функцией inetget, а потом открывал локальный файл.
Какого вида выдает файл? можно пример?
 

axlwor

Скриптер
Сообщения
657
Репутация
147
Код:
#include "INET.au3"
$url = "Твой_URL"
$sReadFile = _INetGetSource($url)
msgbox(0,0,$sReadFile)

Получив нужную строку начинаем
Код:
StringRegExp($sReadFile, $pattern, 3)
 
Автор
Redline

Redline

AutoIT Гуру
Сообщения
506
Репутация
369
У меня ведь прокси :( пробовал так:
Код:
#include <Inet.au3>
$url = 'http://google.ru'
HttpSetProxy(2, 'ip:port', 'user', 'pass')
ConsoleWrite(_INetGetSource($url) & @CRLF)

Выдает html-код страницы с ошибкой авторизации прокси. Без HttpSetProxy(2, 'ip:blum:ort', 'user', 'pass') то же самое.
Простой InetGet выдает пустой файл.
 
Автор
Redline

Redline

AutoIT Гуру
Сообщения
506
Репутация
369
Нашел решение! :laugh:
Код:
$url = 'http://www.google.ru'
$objHTTP = ObjCreate('MSXML2.XMLhttp.3.0')
$objHTTP.Open('GET', $url, False)
$objHTTP.Send

ConsoleWrite($objHTTP.statusText & @CRLF)
ConsoleWrite('==================' & @CRLF)
ConsoleWrite($objHTTP.getAllResponseHeaders & @CRLF)
ConsoleWrite('==================' & @CRLF)
ConsoleWrite($objHTTP.responseText & @CRLF)

Вылазит окно авторизации прокси - заполняем, жмем ОК - и страница наша :D

PS: может кому пригодиться - настройки мультимедиа в реестре:
[box title=TitleBox][HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main]
"Display Inline Images"="no"
"Play_Animations"="no"
"Display Inline Videos"="no"
"Play_Background_Sounds"="no"[/box]
То есть можно перед запуском _IECreate отключать все, а после _IEQuit включать обратно.
 

Mr. Anderson

Новичок
Сообщения
122
Репутация
4
То есть что бы отключить загрузку картинок перед запуском _IECreate нужно параметры реестра поменять?
А как это делается в AutoIt?
 
Автор
Redline

Redline

AutoIT Гуру
Сообщения
506
Репутация
369
Mr. Anderson [?]
А как это делается в AutoIt?
Код:
RegWrite('HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main', 'Display Inline Images', 'REG_SZ', 'no')
RegWrite('HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main', 'Play_Animations', 'REG_SZ', 'no')
RegWrite('HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main', 'Display Inline Videos', 'REG_SZ', 'no')
RegWrite('HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main', 'Play_Background_Sounds', 'REG_SZ', 'no')
 

Vlasssov

Осваивающий
Сообщения
428
Репутация
25
А флэш как отключить?
 

Cargo

Новичок
Сообщения
7
Репутация
0
А отключение анимации на странице его не отключает? Если нет - надо в реестре поискать по имени надстройки и выключить аналогичным образом.

P.S. Посмотрел сейчас, не получилось найти в реестре ключ. Поищу еще, если найду что - напишу.

P.P.S. http://support.microsoft.com/kb/883256/ru - тут вся инфа, думаю, если изучишь - решишь вопрос.
 

ilya_izmailov

Новичок
Сообщения
3
Репутация
0
Эти строки отключают все кроме флеш.
Я вырубил флеш через настройки IE7 (Сервис -> Управление надстройками -> Надстройки, загруженные в Internet Explorer -> Отключить)

Но при открытии броузера в GUI через _IECreateEmbedded
общие настройки IE7 не работают!!!
Флеш все равно проигрывается! Хелп!
Как вырубить флеш в компоненте _IECreateEmbedded???
 

focus

Осваивающий
Сообщения
69
Репутация
20
Не совсем ответ , но посмотрите какой запрос отправляет (формирует) ie (дебаггером) . Если в основном запросе Get присутствует all то писылают всё кроме отключеных . Вариант - симетировать запрос с конкретно - указаным набором ( Html , Css) и всё . Остальное сервер не должн отправлять.
 

ilya_izmailov

Новичок
Сообщения
3
Репутация
0
Задача в том, чтобы отключить только флеш.
Все остальное должно работать...
 
Верх