VB操作IE瀏覽器完全控制
本文將一步步介紹如何透過VB呼叫IE的物件庫來對IE進行控制。
本文使用的程式設計工具是VB6英文企業版,瀏覽器是IE5,以下的程式碼只能在IE4及以上版本下執行。另外為了能深入瞭解程式程式碼,最好能安裝MSDN。文中的所有物件、函式、事件在其中都可以查到。[@more@]
本文使用的程式設計工具是VB6英文企業版,瀏覽器是IE5,以下的程式碼只能在IE4及以上版本下執行。另外為了能深入瞭解程式程式碼,最好能安裝MSDN。文中的所有物件、函式、事件在其中都可以查到。[@more@]
相信現在絕大多數計算機上使用的是IE瀏覽器。如何透過程式設計控制IE的操作呢,
一、如何獲得Windows中所有開啟的瀏覽器視窗
首先開啟VB,建立一個新工程,點選選單 Projects | References 項,在Available References 列表中選擇
Microsoft Internet Controls項將Internet物件引用介入到工程中。新增一個ListBox到Form1,然後在Form1中添
加如下程式碼:
Dim dWinFolder As New ShellWindows
Private Sub Form_Load()
Dim objIE As Object
For Each objIE In dWinFolder
If InStr(1, objIE.FullName, "IEXPLORE.EXE", vbTextCompare) <> 0 Then
List1.AddItem objIE.LocationURL
End If
Next
End Sub
開啟幾個瀏覽器視窗,然後執行程式,可以看到所有瀏覽視窗中的URL地址都在List1中列了出來。
上面程式中的ShellWindows物件是描述當前所有開啟的“瀏覽視窗”物件集合的物件,利用For...Each語句可以
獲得其中所有的瀏覽視窗物件。這是一個WebBrowser物件,在MSDN索引中透過“WebBrowser Object”中可以找到該
物件的詳細介紹
在ShellWindows中的瀏覽視窗物件不僅包含IE,還包含Explore視窗(向資源管理器或者“我的電腦”視窗就是
Explore)。只不過它們的宿主程式一個是IEXPLORE.EXE,一個是EXPLORE.EXE。所以對每一個物件首先根據其FulName
屬性來判斷視窗是IE瀏覽器,如果是,則將該視窗的URL地址列出來。
透過WebBrowser物件可以獲得和設定瀏覽器視窗中的很多屬性,例如視窗大小、工具欄、狀態列狀態以及控制
視窗的瀏覽等,大家透過MSDN都可以查到。
二、如何得到每一個瀏覽視窗的內容
在上面程式的Form1中再新增一個TextBox控制元件,將MultiLine屬性設定為True,然後在List1的Click事件中新增如
下程式碼:
Dim objDoc As Object
Dim objIE As Object
For Each objIE In dWinFolder
If objIE.LocationURL = List1.List(List1.ListIndex) Then
Set objDoc = objIE.Document
For i = 1 To objDoc.All.length - 1
If objDoc.All(i).tagname = "BODY" Then
Text1.Text = objDoc.All(i).innerText
End If
Next
Exit For
End If
Next
執行程式,點選ListBox中的一個列表,所對應的瀏覽器視窗中的文字內容就會顯示在TextBox中。
在上面的程式中,首先根據ListBox中選擇的URL獲得Webrowser物件,然後根據Document屬性獲得文件物件。我們知道
一個頁面中包括HEAD、TITLE、BODY部分,頁面中還可能包括Applet、Script、連線、表單等,這些在文件中都是一個物件
在程式中就是迴圈文件物件下的所有物件,如果物件的名稱是“BODY”,說明物件代表HTML文件的正文部分,那麼訪問物件
的innerText屬性獲得文件正文。關於Document物件更詳細的資訊,大家可以參考MSDN中Webbrowser object幫助中的
Document屬性連線。
三、響應IE事件
上面的部分只是介紹瞭如何訪問Webbrowser物件的屬性,下面介紹如何監控IE事件。
在Form1中再新增一個CommandButton。在程式碼視窗的 [Gengeral]-[Declaration]新增下面的定義:
Dim WithEvents eventIE As WebBrowser_V1
這樣就在Form1中新新增了一個物件,然後在Command1的Click事件中新增如下程式碼:
Dim objIE As Object
For Each objIE In dWinFolder
If objIE.LocationURL = List1.List(List1.ListIndex) Then
Set eventIE = objIE
Command1.Enabled = False
Text1.Text = ""
Exit For
End If
Next
在eventIE的NavigateComplete事件中新增如下程式碼:
Text1.Text = Text1.Text + Chr(13) + Chr(10) + URL
在Form的UnLoad事件中新增下面一句程式碼:
Set dWinFolder = Nothing
執行程式,在ListBox中選擇一個URL後點選Command1,然後轉到與所選項向對應的瀏覽視窗輸入網站地址進行瀏覽,可以
看到所瀏覽過的站點地址在TextBox中一一列出。
上面的程式實現起來也很簡單。首先定義一個可響應事件的Webbrowser物件,然後將它與在ListBox中選擇的Webbrowser對
象聯絡起來,當瀏覽器發生變化時,eventIE物件就能響應相應的事件。
根據IE版本的不同,Webbrowser物件也不同,作者的瀏覽器是IE5.0,在上面將eventIE定義為WebBrowser_V1執行透過,如
果你的瀏覽器版本為4.0的話,可能在執行 Set eventIE = objIE 時,可能產生 Type mistake 錯誤,這時你可以嘗試將
eventIE定義為:Dim WithEvents eventIE As WebBrowser
--------------------------------------------------------------------------------
-- 作者:hongjuan
-- 釋出時間:2004-2-12 21:04:00
--
自己的IE——用VB製作瀏覽器
程式的主角是一個ActiveX控制元件:WebBrowser。當然,預設狀態下VB的工具箱中並沒
有它,我們得手工加入,方法是:右擊工具箱,在出現的快捷選單中選擇“部件...”,
確保在彈出的對話方塊中選中“控制元件”標籤,找到Microsoft Internet Controls,在它前
面的小框中打鉤,然後確定。此時你會發現工具箱中多了兩個小圖示,其中,地球圖示代
表的控制元件正是我們需要的WebBrowser。
由於許多人對WebBrowser控制元件不是很熟悉,VB的幫助中也沒有有關它的內容(反正
我沒有找到),因此有必要介紹一下它的屬性、方法和事件,限於篇幅,我們只涉及程
序中用到的:
屬性:LocationURL 返回控制元件顯示WEB頁面的URL。
方法:Navigate 轉移到指定的URL或開啟指定HTML檔案。
事件:1.DownloadBegin 下載操作開時觸發。
2.DownloadComplete 下載操作完成、終止或失敗時觸發。
3.ProgressChange WebBrowser控制元件跟蹤下載操作的過程,並定期觸發此事件。
其語法為:Sub WebBrowser_ProgressChange (ByVal Progress As Long, ByVal
ProgressMax As Long)。Progress變元是當前已下載的資料總量,ProgressMax變元
是將要下載的資料總量。
4.TitleChange 當前文件標題改變時觸發
除了WebBrowser控制元件外,程式還需要一個Label控制元件:Label1;一個ComboBox控制元件:
combo1,用來顯示URL地址;一個StatusBar控制元件:StatusBar1;一個ProgressBar控制元件:
ProgressBar1,用來顯示下載進度(StatusBar控制元件和ProgressBar控制元件是ActiveX控制元件
Microsoft Windows Common Controls5.0的成員,加入工具箱的方法同WebBrowser控制元件),
這些控制元件的屬性值都用預設值。
以下是程式清單:
Option Explicit
Private Sub Form_Load()
Me.Caption =“My Explorer”
Label1.Caption = “URL”
Combo1.Text = “”
Combo1.Top = Label1.Height
Combo1.Left = 0
WebBrowser1.Top = Combo1.Top + Combo1.Height
WebBrowser1.Left = 0
Form_Resize
StatusBar1.Style = sbrSimple
ProgressBar1.ZOrder
End Sub
Private Sub Form_Resize()
On Error GoTo a
Combo1.Width = Form1.Width - 100
WebBrowser1.Width = Combo1.Width
WebBrowser1.Height = Form1.Height - Combo1.Height - 1000
ProgressBar1.Top = Me.Height - StatusBar1.Height - 330
ProgressBar1.Left = 0.25 * StatusBar1.Width
ProgressBar1.Width = 0.75 * Me.Width - 250
a:
End Sub
Private Sub Combo1_Click()
'轉到指定網址
WebBrowser1.Navigate Combo1.Text
End Sub
Private Sub Combo1_KeyDown(KeyCode As Integer, Shift As Integer)
Dim i As Long
Dim existed As Boolean
If KeyCode = 13 Then
If Left(Combo1.Text, 7) <> “http://”Then
Combo1.Text = “http://”+ Combo1.Text
End If
WebBrowser1.Navigate Combo1.Text
For i = 0 To Combo1.ListCount - 1
If Combo1.List(i) = Combo1.Text Then
existed = True
Exit For
Else
existed = False
End If
Next
If Not existed Then
Combo1.AddItem (Combo1.Text)
End If
End If
End Sub
Private Sub WebBrowser1_DownloadBegin()
'下載開始時狀態列顯示“Now Linking...”
StatusBar1.SimpleText = “Now Linking...”
End Sub
Private Sub WebBrowser1_DownloadComplete()
'下載完成時狀態列顯示“Link Finished”
StatusBar1.SimpleText = “Link Finished”
ProgressBar1.value = 0
End Sub
Private Sub WebBrowser1_ProgressChange(ByVal Progress As Long,
ByVal ProgressMax As Long)
'下載進行時進度條變化
If ProgressMax = 0 Then Exit Sub
ProgressBar1.Max = ProgressMax
If Progress <> -1 And Progress <= ProgressMax Then
ProgressBar1.value = Progress
End If
End Sub
Private Sub WebBrowser1_TitleChange(ByVal Text As String)
Combo1.Text = WebBrowser1.LocationURL
End Sub
一、如何獲得Windows中所有開啟的瀏覽器視窗
首先開啟VB,建立一個新工程,點選選單 Projects | References 項,在Available References 列表中選擇
Microsoft Internet Controls項將Internet物件引用介入到工程中。新增一個ListBox到Form1,然後在Form1中添
加如下程式碼:
Dim dWinFolder As New ShellWindows
Private Sub Form_Load()
Dim objIE As Object
For Each objIE In dWinFolder
If InStr(1, objIE.FullName, "IEXPLORE.EXE", vbTextCompare) <> 0 Then
List1.AddItem objIE.LocationURL
End If
Next
End Sub
開啟幾個瀏覽器視窗,然後執行程式,可以看到所有瀏覽視窗中的URL地址都在List1中列了出來。
上面程式中的ShellWindows物件是描述當前所有開啟的“瀏覽視窗”物件集合的物件,利用For...Each語句可以
獲得其中所有的瀏覽視窗物件。這是一個WebBrowser物件,在MSDN索引中透過“WebBrowser Object”中可以找到該
物件的詳細介紹
在ShellWindows中的瀏覽視窗物件不僅包含IE,還包含Explore視窗(向資源管理器或者“我的電腦”視窗就是
Explore)。只不過它們的宿主程式一個是IEXPLORE.EXE,一個是EXPLORE.EXE。所以對每一個物件首先根據其FulName
屬性來判斷視窗是IE瀏覽器,如果是,則將該視窗的URL地址列出來。
透過WebBrowser物件可以獲得和設定瀏覽器視窗中的很多屬性,例如視窗大小、工具欄、狀態列狀態以及控制
視窗的瀏覽等,大家透過MSDN都可以查到。
二、如何得到每一個瀏覽視窗的內容
在上面程式的Form1中再新增一個TextBox控制元件,將MultiLine屬性設定為True,然後在List1的Click事件中新增如
下程式碼:
Dim objDoc As Object
Dim objIE As Object
For Each objIE In dWinFolder
If objIE.LocationURL = List1.List(List1.ListIndex) Then
Set objDoc = objIE.Document
For i = 1 To objDoc.All.length - 1
If objDoc.All(i).tagname = "BODY" Then
Text1.Text = objDoc.All(i).innerText
End If
Next
Exit For
End If
Next
執行程式,點選ListBox中的一個列表,所對應的瀏覽器視窗中的文字內容就會顯示在TextBox中。
在上面的程式中,首先根據ListBox中選擇的URL獲得Webrowser物件,然後根據Document屬性獲得文件物件。我們知道
一個頁面中包括HEAD、TITLE、BODY部分,頁面中還可能包括Applet、Script、連線、表單等,這些在文件中都是一個物件
在程式中就是迴圈文件物件下的所有物件,如果物件的名稱是“BODY”,說明物件代表HTML文件的正文部分,那麼訪問物件
的innerText屬性獲得文件正文。關於Document物件更詳細的資訊,大家可以參考MSDN中Webbrowser object幫助中的
Document屬性連線。
三、響應IE事件
上面的部分只是介紹瞭如何訪問Webbrowser物件的屬性,下面介紹如何監控IE事件。
在Form1中再新增一個CommandButton。在程式碼視窗的 [Gengeral]-[Declaration]新增下面的定義:
Dim WithEvents eventIE As WebBrowser_V1
這樣就在Form1中新新增了一個物件,然後在Command1的Click事件中新增如下程式碼:
Dim objIE As Object
For Each objIE In dWinFolder
If objIE.LocationURL = List1.List(List1.ListIndex) Then
Set eventIE = objIE
Command1.Enabled = False
Text1.Text = ""
Exit For
End If
Next
在eventIE的NavigateComplete事件中新增如下程式碼:
Text1.Text = Text1.Text + Chr(13) + Chr(10) + URL
在Form的UnLoad事件中新增下面一句程式碼:
Set dWinFolder = Nothing
執行程式,在ListBox中選擇一個URL後點選Command1,然後轉到與所選項向對應的瀏覽視窗輸入網站地址進行瀏覽,可以
看到所瀏覽過的站點地址在TextBox中一一列出。
上面的程式實現起來也很簡單。首先定義一個可響應事件的Webbrowser物件,然後將它與在ListBox中選擇的Webbrowser對
象聯絡起來,當瀏覽器發生變化時,eventIE物件就能響應相應的事件。
根據IE版本的不同,Webbrowser物件也不同,作者的瀏覽器是IE5.0,在上面將eventIE定義為WebBrowser_V1執行透過,如
果你的瀏覽器版本為4.0的話,可能在執行 Set eventIE = objIE 時,可能產生 Type mistake 錯誤,這時你可以嘗試將
eventIE定義為:Dim WithEvents eventIE As WebBrowser
--------------------------------------------------------------------------------
-- 作者:hongjuan
-- 釋出時間:2004-2-12 21:04:00
--
自己的IE——用VB製作瀏覽器
程式的主角是一個ActiveX控制元件:WebBrowser。當然,預設狀態下VB的工具箱中並沒
有它,我們得手工加入,方法是:右擊工具箱,在出現的快捷選單中選擇“部件...”,
確保在彈出的對話方塊中選中“控制元件”標籤,找到Microsoft Internet Controls,在它前
面的小框中打鉤,然後確定。此時你會發現工具箱中多了兩個小圖示,其中,地球圖示代
表的控制元件正是我們需要的WebBrowser。
由於許多人對WebBrowser控制元件不是很熟悉,VB的幫助中也沒有有關它的內容(反正
我沒有找到),因此有必要介紹一下它的屬性、方法和事件,限於篇幅,我們只涉及程
序中用到的:
屬性:LocationURL 返回控制元件顯示WEB頁面的URL。
方法:Navigate 轉移到指定的URL或開啟指定HTML檔案。
事件:1.DownloadBegin 下載操作開時觸發。
2.DownloadComplete 下載操作完成、終止或失敗時觸發。
3.ProgressChange WebBrowser控制元件跟蹤下載操作的過程,並定期觸發此事件。
其語法為:Sub WebBrowser_ProgressChange (ByVal Progress As Long, ByVal
ProgressMax As Long)。Progress變元是當前已下載的資料總量,ProgressMax變元
是將要下載的資料總量。
4.TitleChange 當前文件標題改變時觸發
除了WebBrowser控制元件外,程式還需要一個Label控制元件:Label1;一個ComboBox控制元件:
combo1,用來顯示URL地址;一個StatusBar控制元件:StatusBar1;一個ProgressBar控制元件:
ProgressBar1,用來顯示下載進度(StatusBar控制元件和ProgressBar控制元件是ActiveX控制元件
Microsoft Windows Common Controls5.0的成員,加入工具箱的方法同WebBrowser控制元件),
這些控制元件的屬性值都用預設值。
以下是程式清單:
Option Explicit
Private Sub Form_Load()
Me.Caption =“My Explorer”
Label1.Caption = “URL”
Combo1.Text = “”
Combo1.Top = Label1.Height
Combo1.Left = 0
WebBrowser1.Top = Combo1.Top + Combo1.Height
WebBrowser1.Left = 0
Form_Resize
StatusBar1.Style = sbrSimple
ProgressBar1.ZOrder
End Sub
Private Sub Form_Resize()
On Error GoTo a
Combo1.Width = Form1.Width - 100
WebBrowser1.Width = Combo1.Width
WebBrowser1.Height = Form1.Height - Combo1.Height - 1000
ProgressBar1.Top = Me.Height - StatusBar1.Height - 330
ProgressBar1.Left = 0.25 * StatusBar1.Width
ProgressBar1.Width = 0.75 * Me.Width - 250
a:
End Sub
Private Sub Combo1_Click()
'轉到指定網址
WebBrowser1.Navigate Combo1.Text
End Sub
Private Sub Combo1_KeyDown(KeyCode As Integer, Shift As Integer)
Dim i As Long
Dim existed As Boolean
If KeyCode = 13 Then
If Left(Combo1.Text, 7) <> “http://”Then
Combo1.Text = “http://”+ Combo1.Text
End If
WebBrowser1.Navigate Combo1.Text
For i = 0 To Combo1.ListCount - 1
If Combo1.List(i) = Combo1.Text Then
existed = True
Exit For
Else
existed = False
End If
Next
If Not existed Then
Combo1.AddItem (Combo1.Text)
End If
End If
End Sub
Private Sub WebBrowser1_DownloadBegin()
'下載開始時狀態列顯示“Now Linking...”
StatusBar1.SimpleText = “Now Linking...”
End Sub
Private Sub WebBrowser1_DownloadComplete()
'下載完成時狀態列顯示“Link Finished”
StatusBar1.SimpleText = “Link Finished”
ProgressBar1.value = 0
End Sub
Private Sub WebBrowser1_ProgressChange(ByVal Progress As Long,
ByVal ProgressMax As Long)
'下載進行時進度條變化
If ProgressMax = 0 Then Exit Sub
ProgressBar1.Max = ProgressMax
If Progress <> -1 And Progress <= ProgressMax Then
ProgressBar1.value = Progress
End If
End Sub
Private Sub WebBrowser1_TitleChange(ByVal Text As String)
Combo1.Text = WebBrowser1.LocationURL
End Sub
Dim dWinFolder As New ShellWindows 'IE視窗
需要打後再使用此函式
private sub Getbody()
Dim objDoc As Object
Dim objIE As Object
For Each objIE In dWinFolder
If objIE.LocationURL = "" Then
Set objDoc = objIE.Document
For i = 1 To objDoc.All.Length - 1
If objDoc.All(i).tagname = "BODY" Then
Text1(0).Text = objDoc.All(i).innerText
End If
Next
end if
next
End Sub
需要打後再使用此函式
private sub Getbody()
Dim objDoc As Object
Dim objIE As Object
For Each objIE In dWinFolder
If objIE.LocationURL = "" Then
Set objDoc = objIE.Document
For i = 1 To objDoc.All.Length - 1
If objDoc.All(i).tagname = "BODY" Then
Text1(0).Text = objDoc.All(i).innerText
End If
Next
end if
next
End Sub
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/82387/viewspace-902983/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- microsoft edge是ie瀏覽器嗎 edge瀏覽器和ie瀏覽器一樣嗎ROS瀏覽器
- IE瀏覽器相容瀏覽器
- ie瀏覽器怎麼升級 ie瀏覽器版本過低怎麼辦瀏覽器
- [BUG反饋]IE瀏覽器,百度瀏覽器,搜狗瀏覽器批量操作功能都不相容!!!!傲遊、火狐、谷歌瀏覽器可以瀏覽器谷歌
- 怎麼調出ie瀏覽器_win10 ie瀏覽器怎麼調出來瀏覽器Win10
- edge是什麼瀏覽器 microsoft edge是ie瀏覽器嗎瀏覽器ROS
- ie瀏覽器開啟變成別的瀏覽器怎麼辦 開啟ie瀏覽器變成360怎麼改瀏覽器
- IE瀏覽器版本的判斷瀏覽器
- 微軟IE瀏覽器正式退役微軟瀏覽器
- IE瀏覽器外掛開發瀏覽器
- ie瀏覽器相容模式怎麼設定在哪裡 ie瀏覽器相容模式設定方法瀏覽器模式
- ie瀏覽器退役後還能用嗎 ie瀏覽器關閉停用以後怎麼辦瀏覽器
- edge怎麼改成ie 怎麼把預設瀏覽器從edge恢復到ie瀏覽器瀏覽器
- win10有沒有ie瀏覽器?win10系統怎麼開啟ie瀏覽器Win10瀏覽器
- ie瀏覽器退役後還能用嗎 ie瀏覽器停止更新服務以後有影響嗎瀏覽器
- ie瀏覽器在電腦哪裡 電腦自帶的ie瀏覽器怎麼開啟使用瀏覽器
- JavaScript 判斷IE瀏覽器的版本包括IE11JavaScript瀏覽器IE11
- 2. 瀏覽器控制瀏覽器
- win10 ie11瀏覽器版本過低怎麼升級_win10 ie11瀏覽器版本過低升級如何操作Win10IE11瀏覽器
- win10如何解除安裝ie瀏覽器_win10怎麼解除安裝ie瀏覽器Win10瀏覽器
- 桌面瀏覽器微軟Edge取代IE瀏覽器 市場份額升至9.84%瀏覽器微軟
- win10沒有ie瀏覽器怎麼處理_window10找不到ie瀏覽器如何解決Win10瀏覽器
- win10怎麼升級ie瀏覽器_win10自帶的ie瀏覽器怎麼升級Win10瀏覽器
- ie瀏覽器開啟怎麼是360導航 ie每次開啟都是360瀏覽器怎麼解決瀏覽器
- win10預設瀏覽器edge怎樣切換成IE win10系統把預設瀏覽器edge改為ie瀏覽器的教程Win10瀏覽器
- win10怎麼更新ie瀏覽器_win10升級更新ie瀏覽器到最新版的方法Win10瀏覽器
- win10怎麼清理ie瀏覽器快取_win10清理ie瀏覽器快取檔案的方法Win10瀏覽器快取
- ie瀏覽器打不開網頁怎麼辦 網路正常但是ie瀏覽器打不開解決方法瀏覽器網頁
- windows10系統下IE瀏覽器怎麼開啟activex控制元件Windows瀏覽器控制元件
- python瀏覽器操作有哪些Python瀏覽器
- 瀏覽器之爭:程式設計師眼裡瀏覽器的地位 IE:我開了!瀏覽器程式設計師
- 瀏覽器之爭:程式設計師眼裡瀏覽器的地位IE:我開了!瀏覽器程式設計師
- win10ie瀏覽器不支援付款怎麼解決_win10ie瀏覽器不支援付款如何修復Win10瀏覽器
- win10系統ie瀏覽器版本怎麼檢視_win10系統ie瀏覽器版本如何檢視Win10瀏覽器
- win10為什麼電腦ie瀏覽器找不到_win10找不到ie瀏覽器的解決方法Win10瀏覽器
- Java Selenium WebDriver 控制瀏覽器(三)JavaWeb瀏覽器
- 微軟IE瀏覽器6月16日正式退役 準備好換瀏覽器了嗎微軟瀏覽器
- win10系統下ie瀏覽器怎麼禁用載入項_win10禁用ie瀏覽器載入項教程Win10瀏覽器
- ie瀏覽器自動跳轉edge怎麼恢復 win10開啟ie瀏覽器變成edge怎麼辦瀏覽器Win10