Option Explicit''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 HTMLDocumentDim texbody As HTMLBodyDim Rng As IHTMLTxtRange' ----------------------------------------------------------------------------------------Private Sub Command1_Click()'查找关键字On Error Resume NextSet texbody = webdoc.bodySet Rng = texbody.createTextRange()Do While Rng.findText(Text1.Text) <> FalseRng.SelectRng.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 FalseLoopRng.collapse TrueEnd 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 IHTMLElementCollectionDim i As Integer''设置元素集为所有的Anchor元素,用tags方法引用元素Set Acollection = webdoc.All.tags("a")''把Anchor元素转换为相应的字符串表示,用items方法引用元素For i = 0 To Acollection.length - 1List1.AddItem Acollection.Item(i).toStringNext'length属性返回元素集中元素的个数Label1.Caption = "Number of links: " + Str$(Acollection.length)End Sub