Элемент управления WebBrowser для работы с Web-документами
Не все то золото, что блестит...
Для многих клиентских приложений бывает полезно организовать доступ в Internet и работу с Web-документами непосредственно из самой программы, без переключения во внешний Web-браузер. Такой режим можно довольно просто реализовать с помощью WebBrowser — элемента управления ActiveX, который входит в состав Internet Explorer начиная с версии 3.0. Его можно использовать в любых инструментальных средствах, поддерживающих элементы управления ActiveX, в том числе Visual Basic и MS Office/VBA.
WebBrowser позволяет обращаться к Web-узлам, просматривать Web-страницы, различные документы, папки на локальном компьютере и в сети, а также читать данные из Internet. При этом автоматически поддерживается хронологический список ресурсов, к которым обращался пользователь. Данный элемент управления может работать с любыми документами ActiveX, к которым относится большинство документов Microsoft Office 97. То есть, если у вас установлен Office 97, вы можете непосредственно в окне WebBrowser открывать и редактировать рабочие книги Excel или документы Word.
WebBrowser корректно отображает Web-страницы, содержащие:
-
стандартную HTML-разметку и большинство расширений;
-
любые элементы управления ActiveX;
-
большинство подключаемых моделей Netscape;
-
скриптовые программы, написанные на JavaScript и VBScript;
-
аплеты Java;
-
мультимедийные фрагменты;
-
трехмерные виртуальные миры, созданные на VRML.
Как найти WebBrowser?
Мы начнем разговор с этого, казалось бы, простого вопроса, так как данная операция выполняется по-разному в различных инструментах.
В Microsoft Office 97 (на примере Word), чтобы поместить WebBrowser на панель элементов управления Toolbox в среде VBA, необходимо наличие хотя бы одной формы (она создается командой Insert|UserForm). Далее выберите команду Tools|Additional Controls, чтобы появился список дополнительных элементов управления, зарегистрированных на вашем компьютере. (При работе в среде документа для этого нужно выбрать команду View|Toolbars|Control Toolbox и щелкнуть кнопку More Controls на панели Control Toolbox.) Далее отметьте в появившемся списке Available Controls элемент управления Microsoft WebBrowser Control и щелкните OK. На панели документов появится значок нового инструмента. Теперь его обычным образом можно поместить на форму (рис. 1).
Краткое описание свойств, методов и событий WebBrowser можно посмотреть в окне Object Browser. Однако сначала необходимо установить ссылку на библиотеку объектов Microsoft Internet Controls. Это делается в окне Available References среды VBA (команда Tools|References). Теперь командой View|Object Browser откройте одноименное окно, в списке Project/Library выделите SHDocVw, в списке Classes укажите WebBrowser. Далее, перемещаясь по списку Member Of, вы можете видеть краткое описание компонентов WebBrowser в нижней секции окна (рис. 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 (фактически это и есть Internet Explorer 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.
Чтобы разобраться в том, какие параметры WebBrowser работают реально (и как они работают), мы советуем обратиться к справочной системе VB 6.0 (в VB 5.0 и Office 97 такой информации нет) и найти через Index разделы Reusing the WebBrowser Control (рис. 4) и WebBrowser Object. При этом еще раз подчеркиваем, что из списка параметров, приведенных и здесь (рис. 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), а также работать с документами Microsoft Office 97 (рис. 8). Правда, в последнем случае вам недоступна панель инструментов и меню приложения, но вы можете написать собственный программный код для выполнения каких-либо операций или воспользоваться горячими клавишами команд (например, Ctrl+S для сохранения отредактированного документа Word).
Далее вы можете усовершенствовать этот пример по собственному усмотрению — допустим, создать панель инструментов, использующих методы GoHome, GoBack, GoForward, Refresh и GoSearch. Здесь открывается большое поле для творчества.
КомпьютерПресс 5'1999