Поиск на сайте
Главная Журнал Форум 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;
    }
}

Ссылки:

MSDN

Скачать исходник примера - 52 кб

Скачать демонстрационный проект - 48 кб




Основные разделы сайта


 

Реклама Купить диплом
Читайте статью "Что такое SSL-сертификаты" здесь www.rbc.ua.
Купить диплом высшего образования