add Control out IE...

Signed-off-by: j502647092 <jtb1@163.com>
master
j502647092 2015-06-12 11:02:43 +08:00
parent e44ea64a04
commit db5844eb2c
3 changed files with 107 additions and 6 deletions

View File

@ -10,6 +10,13 @@ Begin VB.Form Frm_Main
ScaleHeight = 9390
ScaleWidth = 19035
StartUpPosition = 3 '´°¿Úȱʡ
Begin VB.ListBox lurl
Height = 5100
Left = 45
TabIndex = 16
Top = 1350
Width = 11670
End
Begin VB.CommandButton pic
Caption = "ͼƬ"
Height = 300
@ -204,14 +211,27 @@ Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Option Explicit
Dim strUrl As String
Dim dWinFolder As New ShellWindows
Dim WithEvents eventIE As WebBrowser_V1
Attribute eventIE.VB_VarHelpID = -1
Private Sub Form_Load()
Dim objIE As Object
For Each objIE In dWinFolder
lurl.AddItem objIE.FullName
If InStr(1, objIE.FullName, "iexplore.exe") <> 0 Then
lurl.AddItem objIE.LocationURL
End If
Next
End Sub
Private Sub alibaba_Click()
web(0).Navigate2 "http://work.1688.com/home/page/index.htm#nav/home"
End Sub
Private Sub Form_Load()
web(0).Navigate2 "http://192.168.0.8:83/"
End Sub
'
'Private Sub Form_Load()
' web(0).Navigate2 "http://192.168.0.8:83/"
'End Sub
Private Sub Form_Resize()
On Error Resume Next

81
VB控制IE.txt Normal file
View File

@ -0,0 +1,81 @@
IE浏览器完全控制 ,相信现在绝大多数计算机上使用的是IE浏览器。如何通过编程控制IE的操作呢本文将一步步介绍如何通过VB 调用IE的对象库来对IE进行控制。
本文使用的编程工具是VB6英文企业版浏览器是IE5以下的代码只能在IE4及以上版本下运行。另外为了能深
入了解程序代码最好能安装MSDN。文中的所有对象、函数、事件在其中都可以查到。
一、如何获得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

View File

@ -1,5 +1,5 @@
Frm_Main = 0, 0, 984, 374, , 0, 0, 918, 535, C
Frm_Main = 0, 0, 984, 374, , 0, 0, 1070, 535, C
TzDownload = 0, 0, 0, 0, C, 0, 0, 0, 0, C
TzListBox = 0, 0, 0, 0, C, 0, 0, 0, 0, C
Frm_Download = 0, 0, 0, 0, C, 0, 0, 0, 0, C
Frm_Download = 44, 44, 1095, 418, , 110, 110, 1094, 484, C
TzProgressBar = 0, 0, 0, 0, C, 0, 0, 0, 0, C