Visual2000 · Архив статей Колесова & Павловой

Элемент управления WebBrowser для работы с Web-документами

Андрей Колесов

© 1999, Андрей Колесов
Авторский вариант. Статья была опубликована c незначительной литературной правкой в журнале "КомпьютерПресс" № 05/99, c. 24-26.


Для многих клиентских приложений бывает полезно...

Для многих клиентских приложений бывает полезно организовать доступ в Internet и работу с Web-документами непосредственно из самой программы, без переключения во внешний Web-браузер. Такой режим можно довольно просто реализовать с помощью WebBrowser — элемента управления ActiveX, который входит в состав Internet Explorer начиная с версии 3.0. Его можно использовать в любых инструментальных средствах, поддерживающих элементы управления ActiveX, в том числе Visual Basic и MS Office/VBA.

WebBrowser позволяет обращаться к Web-узлам, просматривать Web-страницы, различные документы, папки на локальном компьютере и в сети, а также читать данные из Internet. При этом автоматически поддерживается хронологический список ресурсов, к которым обращался пользователь. Данный элемент управления может работать с любыми документами ActiveX, к которым относится большинство документов MS Office 97. То есть, если у вас установлен Office 97, вы можете непосредственно в окне WebBrowser открывать и редактировать рабочие книги Excel или документы Word.

WebBrowser корректно отображает Web-страницы, содержащие:

В начало статьи

Как найти WebBrowser?

Мы начнем разговор с этого, казалось бы, простого вопроса, так как данная операция выполняется по-разному в различных инструментах.

В MS Office 97 (на примере Word), чтобы поместить WebBrowser на панель элементов управления Toolbox в среде VBA, необходимо наличие хотя бы одной формы (она создается командой Insert|UserForm). Далее выберите команду Tools|Additional Controls, чтобы появился список дополнительных элементов управления, зарегистрированных на вашем компьютере. (При работе в среде документа для этого нужно выбрать команду View|Toolbars|Conrtol Toolbox и щелкнуть кнопку More Controls на панели Control Toolbox.) Далее отметьте в появившемся списке Available Controls элемент управления Microsoft WebBrowser Control и щелкните OK. На панели документов появится значок нового инструмента. Теперь его обычным образом можно поместить на форму (рис. 1).

Рис. 1.

Краткое описание свойств, методов и событий WebBrowser можно посмотреть в окне Object Browser. Однако сначала необходимо установить ссылку на библиотеку объектов Microsoft Internet Controls. Это делается в окне Available References среды VBA (команда Tools|References). Теперь командой View|Object Browser откройте одноименное окно, в списке Project/Library выделите SHDocVw, в списке Classes укажите WebBrowser. Далее, перемещаясь по списку Member Of, вы можете видеть краткое описание компонентов WebBrowser в нижней секции окна (рис. 2).

Рис. 2.

Но имейте в виду — на самом деле не все из них доступны для работы (см. ниже).

В Visual Basic логика подключения WebBrowser выглядит несколько иначе. Во вкладе Controls диалогового окна Components (команда Project|Components) отметьте Microsoft Internet Controls и нажмите OK. На панели Toolbox появятся сразу два дополнительных элемента управления — WebBrowser и ShellFolderViewOC. Обратите внимание, что в данный момент автоматически установится ссылка на выбранную библиотеку в списке References (в VBA это нужно делать вручную). Но в окне Object Browser эта библиотека будет называться SHDocVwCtl.

Примечание. Если вы не найдете библиотеку Microsoft Internet Controls в списке зарегистрированных ActiveX-компонентов, попробуйте зарегистрировать ее вручную. Для этого в окне Components|Controls нажмите кнопку Browse и откройте библиотеку SHDOCVW.DLL, которая должна находится в системном каталоге Windows\System\.

В начало статьи

Не все то золото, что блестит...

Чтобы понять реальные возможности использования WebBrowser, следует иметь в виду, что IE 4.0 включает два ActiveX-объекта: собственно WebBrowser Object, а также InternetExplorer Object. Элемент управления WebBrowser, который может быть интегрирован непосредственно в форму VB, функционирует на базе одноименного объекта, а объект InternetExplorer (фактически это и есть IE 4.0) доступен только через механизм OLE Automation.

Функциональность WebBrowser меньше по сравнению с InternetExplorer. Упрощенно говоря, WebBrowser — это собственно окно просмотра документа в браузере, а InternetExplorer — это весь браузер, включая меню, панели инструментов, строку состояния (ввод и отображение адреса документа) и пр. То есть, если вы хотите создать в своем приложении форму, похожую на браузер, вам придется самостоятельно размещать на ней необходимые элементы управления (помимо WebBrowser) и писать код, связывающий их между собой.

Суть же проблемы заключается в том, что по неизвестным причинам в окнах свойств и событий элемента управления WebBrowser (а также при просмотре параметров в окне Object Browser) выдаются параметры, на самом деле недоступные для него (то есть параметры объекта InternetExplorer).

При этом часть свойств, например Resizable (рис. 2), приведена только в окне Object Browser, и их использование в программе вызывает ошибку. Применение же свойств, представленных в окне Properties (рис. 3), но реально недоступных, ошибки не вызывает, однако и не влечет никаких функциональных последствий. В частности, это относится к свойствам MenuBar, FullScreen, StatusBar, ToolBar и событиям OnMenuBar, OnFullScreen, OnStatusBar, OnToolBar.

Рис. 3.

Чтобы разобраться в том, какие параметры WebBrowser работают реально (и как они работают), мы советуем обратиться к справочной системе VB 6.0 (в VB 5.0 и Office 97 такой информации нет) и найти через Index разделы Reusing the WebBrowser Control (рис. 4) и WebBrowser Object. При этом еще раз подчеркиваем, что из списка параметров, приведенных и здесь (рис. 5), реально доступны далеко не все — нужно знакомиться с описанием каждого параметра в отдельности.

Рис. 4.

Рис. 5.

В начало статьи

Работа с WebBrowser

Для знакомства с работой элемента управления WebBrowser создадим небольшое приложение. В верхней части формы разместим текстовое поле txtLinks, а на всем оставшемся пространстве — WebBrowser. Напишем такой код для события txtLinks_KeyPress:

If KeyAscii = 13 Then 
  On Error Resume Next
  ' если пользователь ввел URL,
  ' пытаемся перейти по указанному адресу
  If txtLinks.Text <> "" Then
    WebBrowser1.Navigate txtLinks.Text
  End If
End If

Запустите свое приложение на выполнение. Теперь, если вы будете вводить в текстовое поле допустимый ULR-адрес, то после нажатия Enter элемент управления WebBrowser будет отображать соответствующую Web-страницу или документ.

Убедитесь сами, что ваше приложение может передвигаться по Web-страницам в Internet (рис. 6), просматривать папки на локальном диске (рис. 7), а также работать с документами MS Office 97 (рис. 8). Правда, в последнем случае вам недоступна панель инструментов и меню приложения, но вы можете написать собственный программный код для выполнения каких-либо операций или воспользоваться горячими клавишами команд (например, Ctrl+S для сохранения отредактированного документа Word).

Рис. 6.

Рис. 7.

Рис. 8.

Далее вы можете усовершенствовать этот пример по собственному усмотрению — допустим, создать панель инструментов, использующих методы GoHome, GoBack, GoForward, Refresh и GoSearch. Здесь открывается большое поле для творчества.

В начало статьи