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

[入库:2005年8月18日] [更新:2007年3月24日]

本文简介:选择自 paperback 的 blog

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

     

本文关键:MSHTML
 

本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)

go top