VB操作IE浏览器完全控制
生活随笔
收集整理的這篇文章主要介紹了
VB操作IE浏览器完全控制
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
本文將一步步介紹如何通過VB調用IE的對象庫來對IE進行控制。
本文使用的編程工具是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 Dim dWinFolder As New ShellWindows 'IE窗口
需要打www.sohu.com后再使用此函數
private sub Getbody()
Dim objDoc As Object
Dim objIE As Object
For Each objIE In dWinFolder
If objIE.LocationURL = "www.sohu.com" 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
本文使用的編程工具是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 Dim dWinFolder As New ShellWindows 'IE窗口
需要打www.sohu.com后再使用此函數
private sub Getbody()
Dim objDoc As Object
Dim objIE As Object
For Each objIE In dWinFolder
If objIE.LocationURL = "www.sohu.com" 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/,如需轉載,請注明出處,否則將追究法律責任。
轉載于:http://blog.itpub.net/82387/viewspace-902983/
總結
以上是生活随笔為你收集整理的VB操作IE浏览器完全控制的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2016新年读书计划
- 下一篇: 清除浏览器痕迹(RunDll32.exe