1

Тема: AutoHotkey: библиотека WebControl для управления Internet Explorer

Автор решения, описания и примеров — Archangel.
Библиотека WebControl.ahk находится во вложении поста.

Post's attachments

WebControl.zip 5.36 kb, 886 downloads since 2008-12-30 

You don't have the permssions to download the attachments of this post.
Предложения в русском языке начинаются с большой буквы и заканчиваются точкой.
В названии ветки всегда должен быть указан язык программирования или среда исполнения скрипта, если это возможно.

2

Re: AutoHotkey: библиотека WebControl для управления Internet Explorer

Простейший пример использования:

#include WebControl.ahk ; Подключаем библиотеку WebControl.ahk
ObjIE := cCreate() ; Создаем Объект, к которому будем обращаться по имени ObjIE
cVisible(ObjIE) ; Делаем страницу видимой
cLeft("100", ObjIE)
cTop("100", ObjIE)
cHeight("400", ObjIE)
cWidth("600", ObjIE)
cNavigate("http://script-coding.com/", ObjIE) ; Переходим на сайт script-coding.com
loop 800 ; Цикл
{
    If ((rdy:=cReadyState(ObjIE)) = 4) ; Проверяем, загрузилась ли страница
    Break ; Прерываем цикл
    Sleep, 500
}
sStatus := cGetStatusText(ObjIE) ; Использование возвращаемой функции
MsgBox %sStatus%

Скрипт откроет окно Internet Explorer, загрузит URL http://script-coding.com/, а затем покажет содержимое строки состояния браузера.
Похожий пример:

#include WebControl.ahk ; Подключаем библиотеку WebControl.ahk
ObjIE := cCreate() ; Создаем Объект, к которому будем обращаться по имени ObjIE
; По умолчанию используется команда cNotVisible(ObjIE), делая страницу невидимой, а антивирус беспокойным
cLeft("100", ObjIE)
cTop("100", ObjIE)
cHeight("400", ObjIE)
cWidth("600", ObjIE)
cNavigate("http://forum.script-coding.com/", ObjIE) ; Переходим на сайт script-coding.com
loop 800 ; Цикл
{
    If ((rdy:=cReadyState(ObjIE)) = 4) ; Проверяем, загрузилась ли страница
    Break ; Прерываем цикл
    Sleep, 500
}
cVisible(ObjIE) ; Когда страничка загрузилась - можно сделать ее видимой
1::
{
sStatus := cGetStatusText(ObjIE) ; Переменная sStatus получит текущий статус
MsgBox %sStatus%
Return
}

Скрипт откроет окно Internet Explorer и загрузит URL http://forum.script-coding.com/. При нажатии клавиши "1" скрипт показывает содержимое строки состояния браузера (например, наведите курсор мыши на любую ссылку и нажмите "1").

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

3

Re: AutoHotkey: библиотека WebControl для управления Internet Explorer

Перечень всех функций с используемыми параметрами

Всего используется 4 параметра: Объект, Адрес, Текст и Значение.
cCreate()
cNavigate(Адрес, Объект)
cVisible(Объект)
cNotVisible(Объект)
cLeft(Значение, Объект)
cTop(Значение, Объект)
cHeight(Значение, Объект)
cWidth(Значение, Объект)
cMenubarOFF(Объект)
cToolbarOFF(Объект)
cAddressbarOFF(Объект)
cStatusbarrOFF(Объект)
cMenubarON(Объект)
cToolbarON(Объект)
cAddressbarON(Объект)
cStatusbarrON(Объект)
cGetTitle(Объект)
cGetUrl(Объект)
cGetStatusText(Объект)
cSetStatusText(Объект, Текст)
cGoBack(Объект)
cGoForward(Объект)
cGoHome(Объект)
cGoSearch(Объект)
cRefresh(Объект)
cStop(Объект)
cReadyState(Объект)
cPrint(Объект)
cQuit(Объект)

Краткое описание всех функций с примерами использования

cCreate()
Создает Объект InternetExplorer.Application.
ObjIE := cCreate() ; Создаем Объект, к которому будем обращаться по имени "ObjIE"

cNavigate(Адрес, Объект)
Переходит к указанному адресу
ObjIE := cCreate() ; Создаем Объект
cNavigate("http://script-coding.com/", ObjIE) ; Переходим на сайт script-coding.com

cVisible, cNotVisible (Объект)
Команды управляют видимостью Объекта IE
cNotVisible(ObjIE) ; Делаем страницу невидимой. Соответсвенно cVisible(ObjIE) - наоборот

cLeft, cTop, cHeight, cWidth (Значение, Объект)
Команды управляют размерами Объекта IE. Т.е координаты левого края, верхнего края, а также ширина и высота Объекта IE.
ObjIE := cCreate() ; Создаем Объект
cLeft("25", ObjIE)
cTop("25", ObjIE)
cHeight("40", ObjIE)
cWidth("40", ObjIE)

cMenubarOFF, cToolbarOFF, cAddressbarOFF, cStatusbarOFF (Объект)
Команды убирают или устанавливают (приставка OFF убирает, ON устанавливает) - меню, toolbar, адрессную строку, строку статуса - соответственно
cMenubarOFF(ObjIE) ; Убираем меню
cToolbarOFF(ObjIE) ; Убираем toolbar
cAddressbarOFF(ObjIE) ; Убираем адрессную строку
cStatusbarOFF(ObjIE) ; Убираем строку статуса
1:: cAddressbarON(ObjIE) ; По нажатию на клавишу "1" - показываем адрессную строку

cGetTitle(Объект)
Возвращает заголовок страницы Объекта IE
ObjIE := cCreate() ; Создаем Объект
cNavigate("http://script-coding.com/", ObjIE) ; Переходим на сайт script-coding.com
Sleep, 500 ; Пауза для загрузки страницы. Правильно будет использовать функцию cReadyState
sTitle := cGetTitle(ObjIE) ; Переменная sTitle получит заголовок страницы "Разработка скриптов"
MsgBox %sTitle%

cGetUrl(Объект)
Возвращает текущий адрес URL Объекта IE
sURL := cGetUrl(ObjIE) ; Переменная sURL получит адрес текущей страницы
MsgBox %sURL%

cGetStatusText(Объект)
Возвращает текст из строки состояния Объекта IE
sStatus := cGetStatusText(ObjIE) ; Переменная sStatus получит текущий статус
MsgBox %sStatus%

cSetStatusText(Объект, Текст)
Устанавливает статус Объекту IE в строке состояния
1:: cSetStatusText(ObjIE, "Новый статус")
; На нажатие клавиши "1" в строке состояния отобразится новый статус

cGoBack, cGoForward, cGoHome, cGoSearch, cRefresh, cStop (Объект)
Команды управления навигацией браузера
ObjIE := cCreate() ; Создаем Объект
cGoHome(ObjIE) ; Переход на главную страницу в IE
cGoBack(ObjIE) ; Переход к предыдущей странице в IE
cGoForward(ObjIE) ; Переход к следующей странице в IE
cRefresh(ObjIE) ; Обновление текущей страницы в IE
cGoSearch(ObjIE) ; Переходит к странице поиска установленной в IE
cStop(ObjIE) ; Останавливает загрузку текущей страницы IE

cReadyState(Объект)
Возвращает состояние страницы. Может возвращать одно из пяти значений:
0 - Страница инициализируется.
1 - Ждет ответа
2 - Инициализированна
3 - Загруженна (Сформированна), но не все данные доступны
4 - Страница полностью загруженна, все данные доступны
ObjIE := cCreate() ; Создаем Объект
cNavigate("http://script-coding.com/", ObjIE) ; Переходим на сайт script-coding.com
loop 800 ; Цикл                 
{   
      If ((rdy:=cReadyState(ObjIE)) = 4) ; Проверяем, загрузилась ли страница
      Break ; Прерываем цикл
      Sleep, 500         
}
MsgBox Страница загружена

cPrint(Объект)
Выводит диалог печати для текущей страницы
ObjIE := cCreate() ; Создаем Объект
cNavigate("http://script-coding.com/", ObjIE) ; Переходим на сайт script-coding.com
Sleep, 500
cPrint(ObjIE) ; Вызываем диалог печати

cQuit(Объект)
Закрывает текущий Объект IE
ObjIE := cCreate() ; Создаем Объект
cQuit(ObjIE) ; Убиваем текущий Объект, т.е. инициализировать его придется заново.

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

4

Re: AutoHotkey: библиотека WebControl для управления Internet Explorer

Возможности работы с IE можно значительно расширить путём использования JavaScript. Код Javascript можно передавать прямо через адресную строку командой cNavigate(Адрес, Объект), используя технологию так называемых Закладурок или Букмарклетов. Пример:

#include WebControl.ahk ; Подключаем библиотеку WebControl.ahk
ObjIE := cCreate() ; Создаем Объект
cVisible(ObjIE) ; Делаем страницу видимой
cNavigate("http://script-coding.com/", ObjIE) ; Переходим на сайт script-coding.com
loop 800 ; Цикл                 
{    
      If ((rdy:=cReadyState(ObjIE)) = 4) ; Проверяем, загрузилась ли страница
      Break ; Прерываем цикл
      Sleep, 500         
}
st := "javascript:window.external.ShowBrowserUI('LanguageDialog', null);"
cNavigate(st, ObjIE) ; Используем JavaScript для вызова диалога выбора языка.

С помощью JavaScript можно, например:
Вызвать диалог сохранения - javascript:document.execCommand('SaveAs');
Упорядочить избранное - javascript:window.external.ShowBrowserUI('OrganizeFavorites', null);
Распечатать страницу - javascript: window.print();
И многое другое...
FAQ по JavaScript - http://www.opennet.ru/base/dev/javascriptfaq.txt.html.

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

5

Re: AutoHotkey: библиотека WebControl для управления Internet Explorer

Пример открывает страницу http://mail.ru/ и пытается залогиниться (подставьте нужные значения логина, пароля и почтового домена).

#include WebControl.ahk ; Подключаем библиотеку WebControl.ahk

ObjIE := cCreate() ; Создаем Объект
; По умолчанию страница невидима
cNavigate("http://mail.ru/", ObjIE) ; Переходим на mail.ru

loop 800 ; Цикл                 
{    
      If ((rdy:=cReadyState(ObjIE)) = 4) ; Проверяем, загрузилась ли страница
      Break ; Прерываем цикл
      Sleep, 500         
}

st := "javascript:document.forms('Auth').elements('Login').value = 'Vasya'; document.forms('Auth').elements('Domain').value = 'bk.ru'; document.forms('Auth').elements('Password').value = '345345'; document.forms('Auth').submit();"
cNavigate(st, ObjIE) ; Используем JavaScript для заполнения форм

cVisible(ObjIE) ; После авторизации делаем страницу видимой

1:: 
{
cQuit(ObjIE) ; На нажатие клавиши 1 - закрываем IE
ExitApp
}
Предложения в русском языке начинаются с большой буквы и заканчиваются точкой.
В названии ветки всегда должен быть указан язык программирования или среда исполнения скрипта, если это возможно.

6

Re: AutoHotkey: библиотека WebControl для управления Internet Explorer

Пример открывает URL http://script-coding.com/, немного модифицируя внешний вид окна IE. Клавиша "3" демонстрирует содержимое строки состояния IE, клавиша "2" устанавливает новый текст строки состояния IE, клавиша "1" закрывает окно IE и завершает скрипт.

#include WebControl.ahk ; Подключаем библиотеку WebControl.ahk

ObjIE := cCreate() ; Создаем Объект
; По умолчанию используется команда cNotVisible(ObjIE), делая страницу невидимой, а антивирус беспокойным
cMenubarOFF(ObjIE) ; Убираем меню
cToolbarOFF(ObjIE) ; Убираем toolbar
cAddressbarOFF(ObjIE) ; Убираем адрессную строку
cNavigate("http://script-coding.com/", ObjIE) ; Переходим на Script-coding.com

loop 800 ; Цикл                 
{    
      If ((rdy:=cReadyState(ObjIE)) = 4) ; Проверяем, загрузилась ли страница
      Break ; Прерываем цикл
      Sleep, 500         
}
cVisible(ObjIE) ; Когда страничка загрузилась - можно сделать ее видимой


3:: ; На нажатие клавиши 3 - Выводим статус
{
gstat := cGetStatusText(ObjIE)
MsgBox Статус - %gstat%
Return
}

2:: ; На нажатие клавиши 2 - выставляем свою фразу в статус
{
cSetStatusText(ObjIE, "WebControl for AutoHotkey")
Return
}

1:: 
{
cQuit(ObjIE) ; На нажатие клавиши 1 - закрываем IE
ExitApp
}
Предложения в русском языке начинаются с большой буквы и заканчиваются точкой.
В названии ветки всегда должен быть указан язык программирования или среда исполнения скрипта, если это возможно.