自動化 Internet Explorer
自動化打開了開發基于web應用的世界。 它允許你使用VB或者VC定制成熟的應用。自動化的好處:通過屬性和方法可以改變IE的外觀;你可以提供諸如導航條等用戶接口以便控制用戶的導航。
自動化IE很容易。你建立一個簡單的應用啟動一個IE實例,然后使用控制webbrowser的途徑- IWebBrowser2 接口來控制IE實例。
提醒
術語自動化(
automation
)
真實的含義是通過自動化接口
-- IDispatch.
控制一個
COM
對象。但是在此是指控制
IE
的技術,你不需要直接通過
IDispatch
使用VB
前面已經介紹了如何五分鐘在VB中使用webbrowser來創建全功能的瀏覽器應用. 你也可以大致使用此時間用VB自動化IE。讓我們開始。
啟動一個Standard EXE 工程,選擇References 菜單項. 引用對話框展開如Figure 6-19:
Figure 6-19.
References dialog box.
滾動下拉,選中 Microsoft Internet Controls 檢查框,點擊OK 。加入一個命令按鈕到窗體,命名為btnStart, 修改標題為 Start IE5. 然后雙擊加入click事件代碼。
當用戶點擊Start IE5 按鈕, 你想應用程序啟動一個Internet Explorer 5實例. 先建立一個類型為 InternetExplorer 的全局變量. 命名為InternetExplorer1.
現在, 在btnStart的Click 事件中, 加入如果上一個實例沒有創建就創建新IE實例的代碼。你可以使用CreateObject 或者Vb的New 關鍵字.如下:
Set InternetExplorer1 = New InternetExplorer
|
該代碼創建一個新實例,但是實例是隱藏的,要顯示該實例,設定Visible 屬性為 True, 如下:
InternetExplorer1.Visible = True
|
現在你需要導航到某個web頁,你可以如下調用InternetExplorer 對象的Navigate方法, 如下:
InternetExplorer1.Navigate "http://www.microsoft.com/"
|
至此,整個Vb的自動化IE的源代碼看起來如下:
Option Explicit
Dim InternetExplorer1 As InternetExplorer
?
Private Sub btnStart_Click()
?? ' Only create a new instance of Internet Explorer
?? ' if one hasn't already been created.
?? '
?? If Not InternetExplorer1 Is Nothing Then
????? Exit Sub
?? End If
?
?? Set InternetExplorer1 = New InternetExplorer
??
???' Make Internet Explorer visible and navigate
?? ' to Microsoft's home page.
?? '
?? InternetExplorer1.Visible = True
?? InternetExplorer1.Navigate "http://www.microsoft.com/"
End Sub
?
Private Sub Form_Load()
?? Set InternetExplorer1 = Nothing
End Sub
|
運行應用程序看到IE啟動了! 新的IE實例將被啟動導航到MS的主頁。者不太困難,是不是?現在讓我們加入一些實在的較酷的特征允許你控制你自己創建的IE實例。
首先保存工程為 VbAutoIE.vbp, 且保存你的表單 VbAutoIE.frm. 然后加入一些控制到你的表單,如圖Figure 6-20. 這些允許你顯示或者隱藏IE中不同的用戶接口特征如地址欄、菜單條、狀態條和工具條等。你也可以加入文字到狀態條。
Figure 6-20.
Visual Basic form with controls to customize the Internet Explorer user interface.
現在如下表設定每一個控件的屬性如表6-8.創建4個選項組,每一個包含 一個顯示和一個隱藏選項按鈕如Figure 6-20.
Table 6-8.
Control Properties for a Visual Basic Program Automating Internet Explorer
Control
|
Properties
|
Frame1-4
|
Captions = "AddressBar", "MenuBar", "StatusBar ", and "ToolBar", respectively
|
Hide Option Buttons
|
Caption = "Hide"; Index = 0; Value = False; Names = optAddrBar, optMenuBar, optStatusBar, and optToolBar, respectively
|
Show Option Buttons
|
Caption = "Show"; Index = 1; Value = True; Names = optAddrBar, optMenuBar, optStatusBar, and optToolBar, respectively
|
Label
|
Caption = "Status Text"
|
TextBox
|
Name = txtStatusText. Remove the default text for the Text property
|
CommandButton
|
Caption = "Change"; Name = btnChange
|
加入控制InternetExplorer 對象的代碼控制瀏覽器的用戶接口。看看清單6-1
Listing 6-1.
VbAutoIE.bas
Option Explicit
Dim InternetExplorer1 As InternetExplorer
Const HideBar = 0
Const ShowBar = 1
Private Sub btnChange_Click()
?? On Error Resume Next
?? InternetExplorer1.StatusText = txtStatusText.Text
End Sub
?
Private Sub btnStart_Click()
?? ' Only create a new instance of Internet Explorer
?? ' if one hasn't already been created.
?? '
?? If Not InternetExplorer1 Is Nothing Then
????? Exit Sub
?? End If
??
???Set InternetExplorer1 = New InternetExplorer
??
???' Set the user interface features to match the
?? ' entries specified by the user.
?? '
?? If optAddrBar(ShowBar).Value = True Then
????? InternetExplorer1.AddressBar = True
?? Else
????? InternetExplorer1.AddressBar = False
?? End If
??
???If optMenuBar(ShowBar).Value = True Then
????? InternetExplorer1.MenuBar = True
?? Else
????? InternetExplorer1.MenuBar = False
?? End If
??
???If optToolBar(ShowBar).Value = True Then
????? InternetExplorer1.ToolBar = True
?? Else
????? InternetExplorer1.ToolBar = False
?? End If
?
?? If optStatusBar(ShowBar).Value = True Then
????? InternetExplorer1.StatusBar = True
?? Else
????? InternetExplorer1.StatusBar = False
?? End If
??
???' Make Internet Explorer visible and navigate
?? ' to Microsoft's home page.
?? '
?? InternetExplorer1.Visible = True
?? InternetExplorer1.Navigate "http://www.microsoft.com/"
End Sub
?
Private Sub Form_Load()
?? Set InternetExplorer1 = Nothing
End Sub
?
Private Sub Form_Unload(Cancel As Integer)
?? On Error Resume Next
?? InternetExplorer1.Quit
End Sub
?
Private Sub optAddrBar_Click(Index As Integer)
?? On Error Resume Next
?? InternetExplorer1.AddressBar = CBool(Index)
End Sub
?
Private Sub optMenuBar_Click(Index As Integer)
?? On Error Resume Next
?? InternetExplorer1.MenuBar = CBool(Index)
End Sub
?
Private Sub optStatusBar_Click(Index As Integer)
?? On Error Resume Next
?? InternetExplorer1.StatusBar = CBool(Index)
End Sub
?
Private Sub optToolBar_Click(Index As Integer)
?? On Error Resume Next
?? InternetExplorer1.ToolBar = Index
End Sub
|
在清單6-1, 當表單被裝載,? InternetExplorer1 對象設定為Nothing.當Start IE5 按鈕被點擊, 我們檢查確信沒有上一個實例啟動,如果啟動了我們直接返回。
如果上一實例沒有啟動,我們采用關鍵字
New
創建一個新實例。然后我們檢查選項組的狀態
.
我們依據選項當前值進行
IS
屬性的設置。然后設置
Visible
屬性為
True.
最后我們使用
Navigate
方法導航到
MS
的主頁
.