VB掌管WebBrowser访问MSHTML成员一点经验

原创 2001年10月14日 16:07:00

VB掌管WebBrowser访问MSHTML成员虽然较VC++有限,但对大多数的应用问题不大,而且实现过程也很简单.

一.在VB中使用WebBroswer控件
1.在VB中使用Microsoft Internet Controls做浏览器最方便,但远不能尽WebBrowser之所能. VB能够实现的一些功能如下:
   >掌管WebBrowser控件实现浏览功能
   >自动化IE
   >捕捉IE事件
   >访问DHTML对象模型
但VB不能使用高级掌管接口实现例如关闭Context Menu和控制下载内容等一些功能.有关用VB对IE编程的知识可以参考微软图书<<Microsoft Internet Exploer 5 程序设计(Programmning Internet Explorer 5)>>的相应部分.

2.调用WebBrowser的ExecWB方法能实现一些额外的功能比如CUT,PASTE和SAVEAS等,包含在OLEMDID枚举表中,可以在对象浏览器中看到. 这样我们就可以使WebBrowser具有一些编辑功能,如:
      WebBrowser1.ExecWB OLECMDID_PASTE, OLECMDEXECOPT_DODEFAULT
可以把HTML格式的内容粘贴进WebBroser中, 这样就可以方便的实现一个HTML剪贴工具,既拷贝字符,又保留格式,NotePad靠边站吧.

二.访问MSHTML成员

1.用VB访问DHTML模型,实现对HTML元素的操作非常简单易行.引用Micsoft HTML Object Library之后就可以在对象浏览器看到包含的类及其属性方法.其中主要包含以HTML和IHTML为类名前缀的类,这些类给HTML, DHTML以及脚本(VBSCRIPT, JAVASCRIPT)对象提供定义与接口. 在VB中我们可以用这些类来创建用于访问网页元素的对象实例.而且程序编制与写网页脚本一样简单且相似,所以可以用VBSCRIPT和JAVASCRIPT的资料作参考(本人在学习VB的这一应用时学通了DHTML),例如:微软图书<<动态超文本标识语言从入门到精通(Inside Dynamic HTML)>>(一本翻译的很烂的书!). 如果掌握了VC++ 和MFC, MSDN自然也是个好去处, 那儿有关于MSHTML的丰富资料(虽然不能往VB里照搬,我们可以试验VB在许多方面的可行性.)

2.MSHTML类库[Micsoft HTML Object Library]
    访问MSHTML要引用MSHTML组件库.在IE5以前,这个库包含在mshtml.dll中,对IE5来说这个类型库被转移到mshtml.tlb中. 出于某种原因,也许在引用列表里看不到Micsoft HTML Object Library, 不过可以在文件对话框里键入类型库文件名添加引用.

3.一个例子: 在使用搜索引擎(例如MSN)搜索英文网页时, 希望关键字在搜到的条目中高亮或加重显示. 我让WebBrowser导航到搜索页面,然后给所有的关键字都加上了<SPAN>,另外把网页上的超链接都塞进一个列表框. 其中的查找关键字使用IHTMLTEXTRANGE, 它用于对网页上文本的访问.


部件: Microsoft Internet Controls
引用: Micsoft HTML Object Library --- 参看"MSHTML类库"
控件: WebBrowser1; List1; Label1; Command1
属性: Command1.Caption="FIND"


CODE:

Dim webdoc As HTMLDocument
Dim texbody As HTMLBody
Dim Rng As IHTMLTxtRange
' ----------------------------------------------------------------------------------------
Private Sub Command1_Click()
'查找关键字
On Error Resume Next
Set texbody = webdoc.body
Set Rng = texbody.createTextRange()
Do While Rng.findText(Text1.Text) <> False
Rng.Select
Rng.pasteHTML "<span style='background:SILVER'>" + Text1.Text + "</span>"
'
'用IHTMLTxtRange的execCommand方法可以实现加粗等功能,如:
'Rng.execCommand "bold"
'Rng.execCommand "underline"
'Rng.execCommand "italic"
'参看MSDN>DHTML Reference>Command Identifers
'
Rng.collapse False
Loop
Rng.collapse True
End Sub
'---------------------------------------------------------------------------------------------
Private Sub Form_Load()
WebBrowser1.navigate "http://search.msn.com/results.asp?q=wordlist"
Text1.Text = ""
End Sub
'---------------------------------------------------------------------------------------------
Private Sub WebBrowser1_DocumentComplete(ByVal pDisp As Object, URL As Variant)
'将webdoc设置到被WebBrowser的Document属性返回的文挡对象中
Set webdoc = WebBrowser1.document
'提取超链接
''定义元素集
Dim Acollection As IHTMLElementCollection
''设置元素集为所有的Anchor元素,用tags方法引用元素
Set Acollection = webdoc.All.tags("a")
''把Anchor元素转换为相应的字符串表示,用items方法引用元素
For i = 0 To Acollection.length - 1
    List1.AddItem Acollection.Item(i).toString
Next
'length属性返回元素集中元素的个数
Label1.Caption = "Number of links: " + Str$(Acollection.length)
End Sub

     

webbrowser获取动态网页元素

写第一个博客前先啰嗦介绍下我本人:我其实是个硬件工程师,只是喜欢编程,觉得程序可以大大释放劳动力,所以偶尔会写些小程序,解决日常工作中的小问题,而我写的小程序,都是自动化方向的多(例如本次要实现的自动...
  • zslefour
  • zslefour
  • 2014年03月08日 07:52
  • 4010

vb webbrowser 保存网页源码的各种…

我在网上找到使用rft控件保存webbrowse文本  txtHtml是RichTextBox txtHTML.Text = WebBrowser1.document.body.innerText ´...
  • esonbest1234
  • esonbest1234
  • 2016年02月24日 11:22
  • 367

(VB6)如何默认点击使用Webbrowser打开Office时出现的“您要打开还是保存此文件?”的打开按钮

点击“打开”按钮的思路:       当跳出对话框的时候,程序被挂在,程序不能直接跑到点击代码里,需要开一个线程进行点击。在VB6里,可以用Timer控件进行定时执行点击动作,实现类似线程的功能。 ...
  • liang_tb
  • liang_tb
  • 2016年10月07日 19:38
  • 783

WebBrowser常用属性方法介绍

WebBrowser 常用属性方法 ■■方法 ==============================  ▲GoBack    相当于IE的“后退”按钮,使你在当前历史列表中后退一项 ...
  • xtfnpgy
  • xtfnpgy
  • 2016年10月25日 20:54
  • 741

去WebBrowser控件的3d边框,示例代码段

MyWebBrowser.h #pragma once #include namespace kagula { class CMyWebBrowser : public IDocHostUIH...
  • lee353086
  • lee353086
  • 2014年08月06日 16:36
  • 1811

vb.net利用webbrowser下载(加载完成判断、多线程、委托)

下载一个电子书籍,每页有图片,多个图片就是整个教材的页数。 流程:利用webbrowser来判断网页加载完成,对网页代码用正则提取对应的书页实际地址。逐个下载每个书页到一个文件夹。 问题:we...
  • dzweather
  • dzweather
  • 2016年02月26日 12:32
  • 2107

Webbrowser控件判断网页加载完毕的简单方法

原文:http://blog.csdn.net/CometNet/article/details/5261192 一般情况下,当ReadyState属性变成READYSTAT...
  • eldn__
  • eldn__
  • 2013年11月08日 16:25
  • 3234

C# webbrowser全掌握(二)

一、C#如何用Webbrowser获取网页的全部源代码(含框架 、不含框架) 二、C# webbrowser如何遍历网页元素 三、C# webbrowser模拟填表 四、webbrowser执行JS函...
  • xtfnpgy
  • xtfnpgy
  • 2014年10月19日 20:20
  • 2220

WebBrowser控件表单(form)的自动填写和提交

http://www.sosuo8.com/article-2011/webbrowser-control-form-automatically-fill-and-submit.htm   话说有...
  • qq873113580
  • qq873113580
  • 2013年11月23日 21:16
  • 617

修改WebBrowser控件的内核解决方案(x86和x64有不同)

首先说一下原理 当下很大浏览器他们都是用了IE的core, 这个core只提供HTML/JS的执行和渲染,并没有给出关于界面和一些特性上的事,所以开发自己浏览器如果基于IE core需要自己完成...
  • rztyfx
  • rztyfx
  • 2017年12月26日 12:06
  • 86
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:VB掌管WebBrowser访问MSHTML成员一点经验
举报原因:
原因补充:

(最多只允许输入30个字)