| Главная | Журнал | Форум | Wiki | DRKB | Страны мира |
Автоматизация Microsoft Web Browser в C#
Элемент управления Microsoft Web Browser позволяет Вашему приложению использовать такие возможности как навигация, просмотр страниц и скачивание из интернета. Анализ и генерация HTML-документов в WebBrowser обрабатывается компонентой MSHTML, которая является частью Динамической Объктной модели HTML (DHTML), включающей в себя элементы управления ActiveX и скриптовые языки. Сам WebBrowser выступает лишь в качестве контейнера для компоненты MSHTML и реализует навигацию и связанные с этим функций. MSHTML можно автоматизировать с помощью интерфейсов автоматизации IDispatch и IConnectionPointContainer. Эти интерфейсы позволяют осуществлять автоматизацию MSHTML через объектную модель. ПримечаниеЕсли вы не используете среду разработки Visual Studio.NET, то воспользуйтесь Windows Forms ActiveX Control Importer (Aximp.exe), чтобы конвертировать определения типов в библиотеке типов COM для ActiveX в Windows Forms. Например: чтобы позволить компоненте Веб-Браузера взимодействовать с динамическими библиотеками DLL, запустите в командной строке aximp ..\system32\shdocvw.dll по отношению к вашему пути system32. Компиляция формы, использующей класс AxSHDocVw.AxWebBrowser будет выглядеть следующим образом: csc /r:SHDocVw.dll,AxSHDocVw.dll YourForm.cs . Использование кодаСценарий простой автоматизации:
Для того, чтобы автоматизировать эту задачу, сначала добавьте объект Microsoft Web Browser в пустой проект C# Windows. В Visual Studio.NET IDE, это делается с помощью "Настройка панели инструментов ..." ("Customize Toolbox...") контекстное меню (на панели инструментов), выбираем "Microsoft Web Browser" из списка COM-компонент. Это добавит элемент управления "Explorer" в раздел "Общие" ("General") на панели инструментов. //
// загружаем google при загрузке формы
//
private void Form1_Load(object sender, System.EventArgs e)
{
object loc = "<A href="http://www.google.com/">http://www.google.com/</A>";
object null_obj_str = "";
System.Object null_obj = 0;
this.axWebBrowser1.Navigate2(ref loc , ref null_obj,
ref null_obj, ref null_obj_str, ref null_obj_str);
}
Далее открываем солюшн эксплорер и добавляем ссылку на Microsoft HTML Object Library ( MSHTML ) из списка компонентов COM и добавляем в проект следующий код: //
// Глобальная переменная Task используется для защиты от рекурсивного исполнения кода.
//
using mshtml;
private int Task = 1; // глобально
private void axWebBrowser1_DocumentComplete(object sender,
AxSHDocVw.DWebBrowserEvents2_DocumentCompleteEvent e)
{
switch(Task)
{
case 1:
HTMLDocument myDoc = new HTMLDocumentClass();
myDoc = (HTMLDocument) axWebBrowser1.Document;
// ищем в исходнике гугловской страницы поле ввода:
// <INPUT maxLength="256" size="55" name="q">
//
HTMLInputElement otxtSearchBox =
(HTMLInputElement) myDoc.all.item("q", 0);
otxtSearchBox.value = "Исходники";
// теперь ищем в гугловской странице кнопку I'm Feeling Lucky:
// <INPUT type=submit value="I'm Feeling Lucky" name=btnI>
//
HTMLInputElement btnSearch =
(HTMLInputElement) myDoc.all.item("btnI", 0);
btnSearch.click();
Task++;
break;
case 2:
// выполняем другие действия по автоматизации ...
break;
}
}
Ссылки:Скачать исходник примера - 52 кб Скачать демонстрационный проект - 48 кб |
Основные разделы сайта
|
|
|