本文将一步步介绍如何通过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

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/82387/viewspace-902983/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/82387/viewspace-902983/

VB操作IE浏览器完全控制相关推荐

  1. VB对IE浏览器完全控制

    VB对IE浏览器完全控制 2010年02月18日 IE浏览器完全控制 ,相信现在绝大多数计算机上使用的是IE浏览器.如何通过编程控制IE的操作呢,本文将一步步介绍如何通过VB 调用IE的对象库来对IE ...

  2. vb html ie弹出窗口,vb操作ie浏览器

    相信现在绝大多数计算机上使用的是IE浏览器.如何通过编程控制IE的操作呢,本文将一步步介绍如何通过VB 调用IE的对象库来对IE进行控制. 本文使用的编程工具是VB6英文企业版,浏览器是IE5,以下的 ...

  3. 【转】用VB操作Excel详解

    用VB操作Excel详解 一. VB读写EXCEL表: VB本身提自动化功能可以读写EXCEL表,其方法如下: 1.在工程中引用MicrosoftExcel 类型库: 从"工程"菜 ...

  4. selenium操作各种浏览器

    selenium操作各种浏览器 下载浏览器对应版本的chromedriver.exe放到 %systemroot%目录或其它可以被系统环境找到的目录下 #coding:utf-8 from selen ...

  5. VB 操作Excel

    全面控制 Excel 首先创建 Excel 对象,使用ComObj: Dim ExcelID as Excel.Application Set ExcelID as new Excel.Applica ...

  6. 用VB操作Excel(VB6.0)(整理)

    用VB操作Excel(VB6.0)(整理). 一. VB读写EXCEL表: VB本身提自动化功能可以读写EXCEL表,其方法如下: 1.在工程中引用Microsoft Excel类型库: 从" ...

  7. uc浏览器下方控制栏的调整方法

    很多用户都喜欢使用uc浏览器,有些用户想要对uc浏览器窗口进行自定义设置,比如调整下方的控制栏,要如何操作呢?下面小编就来给大家分享一下操作步骤,打开高级设置通知栏就可以调整. uc浏览器下方控制栏怎 ...

  8. 用VB操作Excel

    用VB操作Excel 全面控制Excel: 首先创建Excel对象,使用ComObj: Dim ExcelID as Excel.Application Set ExcelID as new Exce ...

  9. c 后台代码调用ajax,.NET Selenium WebDriver操作调用浏览器后台执行Js(JavaScript)代码...

    1.Selenium WebDriver安装引用 注意:要用使用的浏览器肯定要装,并且Selenium.Chrome.WebDriver版本要和浏览器版一致. 如果要操作其它浏览器,则安装对应其它浏览 ...

  10. Shell多线程操作及线程数控制实例

    来源:http://www.jb51.net/article/51720.htm 这篇文章主要介绍了Shell多线程操作及线程数控制实例,文中从单线程实现一个需求开始,不断加入代码实现多线程以及线程数 ...

最新文章

  1. 河马搞笑GIF动态图网站(http://gif.hemaj.com)上线,老司机快上车!
  2. 题目1033:继续xxx定律
  3. mysql 特殊字符
  4. 解决WINCE6.0新建工程编译出错的问题
  5. C# 将\u1234类型的字符转化成汉字
  6. 记录第一次使用Texlive+TexStudio写论文时遇到的问题(随时更新)
  7. c++ stack 遍历_C/C++内存分配!
  8. 论文浅尝 | 基于RNN与相似矩阵CNN的知识库问答
  9. @requestbody和@requestparam作用
  10. python pdf报告_python生成pdf报告、python实现html转换为pdf报告
  11. 张鹏 html 笔记,传智 张鹏 html+css 课程 笔记2(吐血整理)
  12. [导入]Silverlight 的 Data Bindings:Silverlight 與 ASP.NET Ajax
  13. python文件管不了_Python文件_管道与模块编写
  14. 攻防世界 logmein(重温,重点在于怎么写出脚本)
  15. 小魔术用计算机猜年龄,魔术中的数学之猜年龄
  16. Long-tail Relation Extraction via Knowledge Graph Embeddings and Graph Convolution Networks
  17. 9 9简单的数独游戏python_如何使用tkinter gui python创建一个9*9的数独生成器?
  18. 前端开发:如何写一手漂亮的 Vue
  19. 【bugfix】遇到一个conda 报错CondaValueError: prefix already exists (conda:4.8.1)
  20. VISSIM4.30安装

热门文章

  1. 万王之王手游服务器维护,万王之王手游-KOK-官方网站-腾讯游戏-一个世界的重新开启...
  2. 2017年腾讯笔试题目
  3. 排序算法——鸡尾酒排序
  4. pytorch detach用法
  5. JS 转换格林尼治时间
  6. 视频编码解码(H264中的profile和level)
  7. 2022腾讯实习生移动客户端开发一面(IEG)
  8. 团队任务3:第一次冲刺-第三组梦之队
  9. 菜哥学知识图谱(通过“基于医疗知识图谱的问答系统”)(三)(代码分析)
  10. js将数字金额用符号间隔 vue中使用逗号间隔数字金额-共享博客