Что нового

Как запустить IE10 из AutoIT

irvin12345

Новичок
Сообщения
30
Репутация
2
Код:
#include <GUIConstants.au3>
#include <WindowsConstants.au3>
#include <IE.au3>
#include <GDIP.au3>
#include <GDIPlus.au3>

$oIE = _IECreateEmbedded()
GUICreate(("Windows Internet Explorer"), 1000, 800, 0, 0)
GUISetState(@SW_SHOW)
$GUIActiveX = GUICtrlCreateObj($oIE, 0, 0, 1000, 800)

_IENavigate($oIE, 'http://bilet.pp.ru/calculator_rus/moy_brouser.php')
Sleep(10000)

Если смотреть просто из IE - показывает "MSIE 10.0".
Из AutoIT данный сайт показывает что работа идет через "MSIE 7.0".

Как так? Есть ли возможность сделать ie10 через autoIt? Может библиотеки обновить?(какие и откуда?) Другие варианты?

Нужно для работы с одним сайтом, который не поддерживает IE ниже 10.0.
Система: Windows 7 + IE 10 + AutoIt: 3.3.9.4, 3.3.8.1.
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,323
Предупреждение За нарушение правил форума (пункт В.11):
Любые отрывки AutoIt кода необходимо заключать в тег [autoit]
autoit.gif
(подробнее), а обычный код соответственно в тег [code]
code.gif
(подробнее). Также большие выдержки текста помещайте под тег [spoiler]
spoiler.gif
(подробнее), там где это поддерживается естественно. Как в случае с названием темы, также короткое и эргономичное сообщение привлекает больше внимания, и шансы на получение конкретного ответа увеличиваются.


С уважением, ваш Глобальный модератор.
 

Belfigor

Модератор
Локальный модератор
Сообщения
3,608
Репутация
941
Тут описывается как через AutoIt запустить IE 9
Настройка Internet Explorer для работы с ботом

Для того чтобы устранить ошибку возникшую в Шаге 7 у вас есть несколько вариантов:

1) Вариант для параноиков:
1.1) Для начала прочитать соответствующую документацию на MSDN по работе с эмулятором IE поставляемым вместе с ОС.
1.2) Запустить инструмент regedit.exe.
1.3) В появившемся окошке regedit.exe, слева вы увидите древовидный список, там вам нужно перейти по следующему пути:
Для 32bit систем: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BROWSER_EMULATION
Для 64bit систем: HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BROWSER_EMULATION
Вне зависимости от битности вашей ОС, в итоге вы попадете в папку FEATURE_BROWSER_EMULATION, где в зависимости от уже установленных программ, вероятнее всего будут какие-то записи (например у меня там записан skype.exe). Их конечно же трогать не надо.















1.4) Нажать в правой части окна, правой кнопкой на пустое место и там выбрать пункт "Создать => Параметр DWORD 32 бита"



1.5) После выполнения пункта 1.4 у вас в окне regedit появится новая строка, которой нужно будет задать имя "CnCTA Bot botgaming.ru v1.0.exe" без кавычек.

1.6) Далее ПКМ на свежесозданной строке и жмем "Изменить".

1.7) В появившемся окошке в группе "Система счисления" ставим точку напротив "Десятичная", в поле "Значение" вводим цифру 9000, жмем "OK".



1.8) Видим, что у нас в реестре появилась запись следующего вида:



1.9) Пищим от радости, мы почти взломали пентагон .
Закрываем regedit.exe, пере запускаем бота.

2) Вариант для ленивых:
2.1) Для 32bit систем: запустить файл 32bit.reg содержащий внутри себя следующие строки:
Код:
Windows Registry Editor Version 5.00
;32bit - Установить для "CnCTA Bot botgaming.ru v1.0.exe" режим эмуляции IE версии 9
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BROWSER_EMULATION]
"CnCTA Bot botgaming.ru v1.0.exe"=dword:00002328

Для 64bit систем: запустить файлик 64bit.reg, содержащий, внутри себя следующие строки:
Код:
Windows Registry Editor Version 5.00
;64bit - Установить для "CnCTA Bot botgaming.ru v1.0.exe" режим эмуляции IE версии 9
[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BROWSER_EMULATION]
"CnCTA Bot botgaming.ru v1.0.exe"=dword:00002328

Ведь мы вас любим и стараемся всячески сэкономить ваше время

2.2) Запустив .reg файл, система вас уведомит, что ваши действия могут привести к делению на 0 и как следствие очередному хоть и локальному, но все же концу света. У вас тут 2 решения проблемы, нажать несколько раз "OK", или же воспользоваться вариантом для параноиков.



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

Вот ссылка на гайд: LINK
Там со скринами.
 

InnI

AutoIT Гуру
Сообщения
4,983
Репутация
1,461
irvin12345 [?]
Из AutoIT данный сайт показывает что работа идет через "MSIE 7.0".
А если проверить здесь
Код:
_IENavigate($oIE, 'http://html5test.com')
то при установленном IE8 результат будет "42 and no bonus points", а при установленном IE10 - "320 and 6 bonus points". Получается, что движок работает того IE, который установлен, а действия, предложенные уважаемым Belfigor, влияют только на строку идентификации (кстати, действительно влияют - я проверил).
 
Автор
I

irvin12345

Новичок
Сообщения
30
Репутация
2
to Belfigor: к сожалению там не просто ограничение на представление браузера. Там такого в принципе нет, но есть корявый ява скрипт(собственно в нем и сосредоточена вся работа страницы), который на ie ниже 10 вываливается с кучей крит ошибок.
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,323
irvin12345,
ИМХО, можно открыть в скрытом режиме IE10, получить из него нужные данные, и показать их в окне.
 
Автор
I

irvin12345

Новичок
Сообщения
30
Репутация
2
madmasles,
Не совсем понимаю что вы имеете ввиду.
в скрытом режиме можно нажимать кнопки на странице?
 
Автор
I

irvin12345

Новичок
Сообщения
30
Репутация
2
ужас, решение пришло с неожиданной стороны. Все работает если использовать _IECreate() вместо _IECreateEmbedded().
И всё-таки, кто-нибудь подскажет почему при использовании _IECreateEmbedded() получается IE 7 вместо IE 10 и можно ли это как-то исправить?


Код:
#include <GUIConstants.au3>
#include <WindowsConstants.au3>
#include <IE.au3>
#include <GDIP.au3>
#include <GDIPlus.au3>

$oIE = _IECreateEmbedded()
GUICreate(("Windows Internet Explorer"), 1000, 800, 0, 0)
GUISetState(@SW_SHOW)
$GUIActiveX = GUICtrlCreateObj($oIE, 0, 0, 1000, 800)

_IENavigate($oIE, 'http://bilet.pp.ru/calculator_rus/moy_brouser.php')
Sleep(10000)


Код:
#include <IE.au3>
$oIE = _IECreate()
_IENavigate($oIE, 'http://bilet.pp.ru/calculator_rus/moy_brouser.php')
Sleep(10000)
 

sngr

AutoIT Гуру
Сообщения
1,015
Репутация
411
Потому что _IECreateEmbedded() это Shell.Explorer.2, а _IECreate() - InternetExplorer.Application. Это разные объекты. Попроси мелкософт чтоб исправил.
 
Автор
I

irvin12345

Новичок
Сообщения
30
Репутация
2
to sngr: ок, спасибо.
upd: а в ie10 неслабая такая утечка памяти.( печаль-беда, придется переходить на js+chrome.(
 

prostoix

Новичок
Сообщения
8
Репутация
0
В IE есть такая относительно не приятная вещь как "режим обозревателя" :stars:
"Сервис" - "Параметры режима представления совместимости". По умолчанию всегда проставлена галочка "Отобразить узлы интрасети в режиме совместимости"
Именно из-за этого параметра в заголовках запросов от IE уходит <meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7">

Выход: снять галочку и проверить какие заголовки уходят при работе в самом браузере.

PS: Повторю проверка обязательна...
Ибо IE в силу своей жизни мозгами в реестре напрямую повязан с учетной политикой :stars:
И-и-и помните: "То, что в IE работала всегда - однажды, может перестать работать!"

:IL_AutoIt_1: Для более конструктивных тестов IE советую использовать HttpWatch (https://www.httpwatch.com/)
Ибо в IE режим разработчика (F12) малость ущемлен в возможностях!!!
 
Верх