02:13 Объекты InternetExplorer и WebBrowser | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Объекты InternetExplorer и WebBrowserСодержание: 1. Создание объектов 2. Свойства 3. Методы 3.1. Метод ExecWB 3.2. Метод QueryStatusWB 3.3. Метод ShowBrowserBar 3.4. Метод Navigate 3.5. Метод Refresh2 4. События 5. Примеры кода 1. Создание объектовInternet Explorer включает два ActiveX-объекта: WebBrowser Object и InternetExplorer Object. Элемент управления WebBrowser может быть интегрирован непосредственно в форму VB или размещён на Web-странице, а объект InternetExplorer доступен только через механизм OLE Automation. Функциональность WebBrowser меньше по сравнению с функциональностью InternetExplorer. Упрощенно говоря, WebBrowser — это собственно окно просмотра документа в браузере, а InternetExplorer — это весь браузер, включая меню, панели инструментов, строку состояния и прочее. Оба объекта находятся в библиотеке "Microsoft Internet Controls" (shdocvw.dll в каталоге system32). Также может пригодиться библиотека "Microsoft HTML Object Library" (mshtml.dll там же) - это именно та среда, с которой оперируют скрипты на языках JavaScript и VBScript на Web-страницах. Примечание: приведённое ниже описание свойств, методов и событий не является до конца исчерпывающим (исчерпывающее описание можно найти в MSDN) и предназначено, в первую очередь, для работы с обозревателем как с OLE-Automation сервером из различных скриптовых сред или Visual Basic. Пример создания OLE-объекта InternetExplorer: Set objIE = CreateObject("InternetExplorer.Application") Пример размещения ActivX-объекта WebBrowser на Web-странице: <OBJECT ID="WebBrowser" WIDTH=0 HEIGHT=0 CLASSID="clsid:8856F961-340A-11D0-A96B-00C04FD705A2"></OBJECT> 2. СвойстваПрименение некоторых свойств - см. Примеры кода.
3. МетодыПрименение некоторых методов - см. Примеры кода.
3.1. Метод ExecWBВыполняет команду и возвращает статус выполнения. Доступен в InternetExplorer и WebBrowser. Параметры:
Некоторые возможные значения параметра "CmdID" (подробнее - см. в MSDN описание "OLECMDID enumeration"):
Возможные значения параметра "CmdExecOpt":
Пример: Set objIE = CreateObject("InternetExplorer.Application") objIE.Navigate "about:blank" While objIE.Busy Wscript.Sleep 200 Wend objIE.Visible = 1 objIE.ExecWB 6, 1 'выдача диалога печати 'objIE.ExecWB 6, 2 'немедленная печать 3.2. Метод QueryStatusWBВозвращает статус указанной команды. Доступен в InternetExplorer. Параметры:
Возможные значения флагов в возвращаемом значении (возвращаемое значение - сумма флагов):
Пример: Set objIE = CreateObject("InternetExplorer.Application") objIE.Navigate "about:blank" While objIE.Busy Wscript.Sleep 200 Wend objIE.Visible = 1 If objIE.QueryStatusWB(6) = 2+1 Then objIE.ExecWB 6, 1 'выдача диалога печати End If 3.3. Метод ShowBrowserBarПоказывает или скрывает указанную панель обозревателя. Доступен в InternetExplorer. Параметры:
Некоторые возможные значения параметра "vClsID":
Пример: Set objIE = CreateObject("InternetExplorer.Application") objIE.Navigate "about:blank" While objIE.Busy Wscript.Sleep 200 Wend objIE.Visible = 1 objIE.ShowBrowserBar "{30D02401-6A81-11D0-8274-00C04FD5AE38}", True 3.4. Метод NavigateОсуществляет навигацию к указанному ресурсу (инициирует операцию открытия документа). Доступен в InternetExplorer и WebBrowser. Параметры:
Возможные значения флагов параметра "Flags":
Возможные значения параметра "TargetFrameName" (кроме собственно имени конкретного фрейма):
Пример: Set objIE = CreateObject("InternetExplorer.Application") objIE.Navigate "about:blank" While objIE.Busy Wscript.Sleep 200 Wend objIE.Visible = 1 3.5. Метод Refresh2Аналогичен методу Refresh, но имеет единственный необязательный параметр, который задаёт "уровень" обновления. Заголовок "pragma:nocashe" запрещает серверу возвращать кэшированную копию документа, обеспечивая самую свежую информацию, однако этот заголовок может послужить причиной проблем на некоторых серверах. Возможные значения параметра:
4. СобытияАргументы событий - см. Примеры кода.
5. Примеры кодаСвойства AddressBar и MenuBar: Set objIE = CreateObject("InternetExplorer.Application") objIE.Navigate "about:blank" While objIE.Busy Wscript.Sleep 200 Wend objIE.AddressBar = False objIE.MenuBar = False objIE.Visible = 1 Свойства ToolBar, StatusBar и Resizable: Set objIE = CreateObject("InternetExplorer.Application") objIE.Navigate "about:blank" While objIE.Busy Wscript.Sleep 200 Wend objIE.ToolBar = False objIE.StatusBar = False objIE.Resizable = False objIE.Visible = 1 Свойство FullScreen: Set objIE = CreateObject("InternetExplorer.Application") objIE.Navigate "about:blank" While objIE.Busy Wscript.Sleep 200 Wend objIE.FullScreen = True objIE.Visible = 1 Свойство TheaterMode: Set objIE = CreateObject("InternetExplorer.Application") objIE.Navigate "about:blank" While objIE.Busy Wscript.Sleep 200 Wend objIE.TheaterMode = True objIE.Visible = 1 Свойство StatusText: Set objIE = CreateObject("InternetExplorer.Application") objIE.Navigate "about:blank" While objIE.Busy Wscript.Sleep 200 Wend objIE.Visible = 1 objIE.Document.Write objIE.StatusText objIE.StatusText = "ТЕКСТ СТРОКИ СОСТОЯНИЯ" Свойства Height, Width, Top и Left: Set objIE = CreateObject("InternetExplorer.Application") objIE.Navigate "about:blank" While objIE.Busy Wscript.Sleep 200 Wend objIE.Height = 200 objIE.Width = 300 objIE.Top = 0 objIE.Left = 0 objIE.Visible = 1 Свойства Name, FullName, Path, Type, LocationName и LocationURL: Set objIE = CreateObject("InternetExplorer.Application") objIE.Navigate "about:blank" While objIE.Busy Wscript.Sleep 200 Wend objIE.Document.Write "Name = """ & objIE.Name & """<br>" objIE.Document.Write "FullName = """ & objIE.FullName & """<br>" objIE.Document.Write "Path = """ & objIE.Path & """<br>" objIE.Document.Write "Type = """ & objIE.Type & """<br>" objIE.Document.Write "LocationName = """ & objIE.LocationName & """<br>" objIE.Document.Write "LocationURL = """ & objIE.LocationURL & """<br>" objIE.Visible = 1 Свойство Busy и метод Stop: Set objIE = CreateObject("InternetExplorer.Application") objIE.Navigate "qwerty" If objIE.Busy Then objIE.Stop End If objIE.Visible = 1 Свойство HWND: On Error Resume Next Set objIE = CreateObject("InternetExplorer.Application") objIE.Navigate "about:blank" While objIE.Busy Wscript.Sleep 200 Wend objIE.Visible = 1 Set objShellApp = CreateObject("Shell.Application") Set objFolder = objShellApp.BrowseForFolder(objIE.HWND, "Выбор папки", 0, "C:\") objIE.Document.Write objFolder.Self.Path If Err.Number <> 0 Then objIE.Document.Write "Папка не выбрана!" End If Свойство Document: Set objIE = CreateObject("InternetExplorer.Application") objIE.Navigate "about:blank" While objIE.Busy Wscript.Sleep 200 Wend objIE.Document.Write "Hello, Internet Explorer!" objIE.Visible = 1 Свойство ReadyState: Set objIE = CreateObject("InternetExplorer.Application") MsgBox "ReadyState = " & objIE.ReadyState objIE.Navigate "about:blank" While objIE.Busy Wscript.Sleep 200 Wend MsgBox "ReadyState = " & objIE.ReadyState objIE.Visible = 1 Управление заголовком окна, отключение контекстного меню: Set WshShell = CreateObject("WScript.Shell") WshShell.RegWrite "HKCU\Software\Microsoft\Internet Explorer\Main\Window Title", "Заголовок окна IE" Set objIE = CreateObject("InternetExplorer.Application") objIE.Navigate "about:blank" While objIE.Busy Wscript.Sleep 200 Wend objIE.Document.Write "<title>Заголовок отчёта</title>" objIE.Document.Write "<body oncontextmenu=""return false""></body>" objIE.ToolBar = False objIE.StatusBar = False objIE.Visible = 1 WshShell.RegDelete "HKCU\Software\Microsoft\Internet Explorer\Main\Window Title" Пример обработки событий изменения свойств объекта: Set objIE = WScript.CreateObject("InternetExplorer.Application", "IE_") objIE.Navigate "about:blank" While objIE.Busy Wscript.Sleep 200 Wend objIE.Visible = 1 objIE.FullScreen = False 'сработает событие OnFullScreen objIE.MenuBar = True 'сработает событие OnMenuBar objIE.StatusBar = True 'сработает событие OnStatusBar objIE.ToolBar = True 'сработает событие OnToolBar 'Бесконечное ожидание; скрипт завершится только тогда, 'когда сработает событие OnQuit. While 0=0 WScript.Sleep 1000 Wend '******************************************************************** Sub IE_OnQuit() MsgBox "OnQuit event!" WScript.Quit End Sub '******************************************************************** Sub IE_OnFullScreen(ByVal FullScreen) MsgBox "OnFullScreen event!" End Sub '******************************************************************** Sub IE_OnMenuBar(ByVal MenuBar) MsgBox "OnMenuBar event!" End Sub '******************************************************************** Sub IE_OnStatusBar(ByVal StatusBar) MsgBox "OnStatusBar event!" End Sub '******************************************************************** Sub IE_OnToolBar(ByVal ToolBar) MsgBox "OnToolBar event!" End Sub '******************************************************************** Sub IE_OnVisible(ByVal Visible) MsgBox "OnVisible event!" End Sub Пример обработки событий печати: Set objIE = WScript.CreateObject("InternetExplorer.Application", "IE_") objIE.Navigate "about:blank" While objIE.Busy Wscript.Sleep 200 Wend objIE.Visible = 1 'Бесконечное ожидание; скрипт завершится только тогда, 'когда сработает событие OnQuit. While 0=0 WScript.Sleep 1000 Wend '******************************************************************** Sub IE_OnQuit() MsgBox "OnQuit event!" WScript.Quit End Sub '******************************************************************** Sub IE_PrintTemplateInstantiation(ByVal pDisp) pDisp.Document.Write "PrintTemplateInstantiation event!>br>" End Sub '******************************************************************** Sub IE_PrintTemplateTeardown(ByVal pDisp) pDisp.Document.Write "PrintTemplateTeardown event!>br>" End Sub Пример обработки событий навигации: Set objIE = WScript.CreateObject("InternetExplorer.Application", "IE_") objIE.Navigate "about:blank" While objIE.Busy Wscript.Sleep 200 Wend objIE.Visible = 1 'Бесконечное ожидание; скрипт завершится только тогда, 'когда сработает событие OnQuit. While 0=0 WScript.Sleep 1000 Wend '******************************************************************** Sub IE_OnQuit() WScript.Quit End Sub '******************************************************************** Sub IE_BeforeNavigate2(ByVal pDisp, ByRef url, ByRef Flags, ByRef TargetFrameName, _ ByRef PostData, ByRef Headers, ByRef Cancel) 'принудительная навигация на "about:blank" If url <> "about:blank" Then pDisp.Stop Cancel = True pDisp.Navigate "about:blank" End If End Sub '******************************************************************** Sub IE_NavigateComplete2(ByVal pDisp, ByVal URL) MsgBox "NavigateComplete2 event" & vbCrLf & "URL: " & URL End Sub '******************************************************************** Sub IE_DocumentComplete(ByVal pDisp, ByVal URL) MsgBox "DocumentComplete event" & vbCrLf & "URL: " & URL End Sub '******************************************************************** Sub IE_DownloadComplete() MsgBox "DownloadComplete event" End Sub '******************************************************************** Sub IE_DownloadBegin() MsgBox "DownloadBegin event" End Sub Пример обработки события ошибки навигации: Set objIE = WScript.CreateObject("InternetExplorer.Application", "IE_") objIE.Navigate "about:blank" While objIE.Busy Wscript.Sleep 200 Wend objIE.Visible = 1 'Бесконечное ожидание; скрипт завершится только тогда, 'когда сработает событие OnQuit. While 0=0 WScript.Sleep 1000 Wend '******************************************************************** Sub IE_OnQuit() WScript.Quit End Sub '******************************************************************** Sub IE_NavigateError(ByVal pDisp, ByVal url, ByVal TargetFrameName, _ ByVal StatusCode, ByRef Cancel) MsgBox "NavigateError event" End Sub Пример обработки события CommandStateChange: Set objIE = WScript.CreateObject("InternetExplorer.Application", "IE_") objIE.Navigate "about:blank" While objIE.Busy Wscript.Sleep 200 Wend objIE.Visible = 1 'Бесконечное ожидание; скрипт завершится только тогда, 'когда сработает событие OnQuit. While 0=0 WScript.Sleep 1000 Wend '******************************************************************** Sub IE_OnQuit() WScript.Quit End Sub '******************************************************************** Sub IE_CommandStateChange(ByVal Command, ByVal Enable) If Command=&hFFFFFFFF Then 'Command=CSC_UPDATECOMMANDS MsgBox "Toolbar button might have changed. Command is enabled = " & Enable Elseif Command=&h00000001 Then 'Command=CSC_NAVIGATEFORWARD MsgBox "Forward button has changed. Command is enabled = " & Enable Elseif Command=&h00000002 Then 'Command=CSC_NAVIGATEBACK MsgBox "Back button has changed. Command is enabled = " & Enable End If End Sub Пример обработки события NewWindow2: Set objIE = WScript.CreateObject("InternetExplorer.Application", "IE_") objIE.Navigate "about:blank" While objIE.Busy Wscript.Sleep 200 Wend objIE.Document.Write "<A HREF='www.ya.ru'>www.ya.ru</A>" objIE.Visible = 1 'Бесконечное ожидание; скрипт завершится только тогда, 'когда сработает событие OnQuit. While 0=0 WScript.Sleep 1000 Wend '******************************************************************** Sub IE_OnQuit() WScript.Quit End Sub '******************************************************************** Sub IE_NewWindow2(ByRef ppDisp, ByRef Cancel) MsgBox "Навигация отменена." Cancel = True End Sub Пример обработки событий StatusTextChange и TitleChange: Set objIE = WScript.CreateObject("InternetExplorer.Application", "IE_") objIE.Navigate "about:blank" While objIE.Busy Wscript.Sleep 200 Wend objIE.Visible = 1 'Бесконечное ожидание; скрипт завершится только тогда, 'когда сработает событие OnQuit. While 0=0 WScript.Sleep 1000 Wend '******************************************************************** Sub IE_OnQuit() WScript.Quit End Sub '******************************************************************** Sub IE_StatusTextChange(ByVal sText) MsgBox "StatusTextChange event!" & vbCrLF & sText End Sub '******************************************************************** Sub IE_TitleChange(ByVal sText) MsgBox "TitleChange event!" & vbCrLF & sText End Sub | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Всего комментариев: 0 | |