百度空间 | 百度首页 
 
查看文章
 
VB掌管WebBrowser访问MSHTML成员一点经验
2008-05-12 19:14

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


类别:『visual basic』 | 添加到搜藏 | 浏览() | 评论 (5)
 
最近读者:
 
网友评论:
1
2008-05-12 21:01 | 回复
哇~不是吧,好高的访问量啊~ 佩服佩服 嫉妒嫉妒o(∩_∩)o...来回访~
 
2
2008-05-13 18:19 | 回复
厉害
 
3
2008-05-14 23:28 | 回复
呵呵,没事过来看看
 
5
2008-06-08 11:56 | 回复
端午到,挂香包,吃粽子,家家户户真热闹!艾蒿高高门前舞,驱邪气,防五毒,高高兴兴过端午。
 
6
2008-06-08 17:52 | 回复
We’re like the cream. When the cream rises to the top, it separates itself from the milk. Perhaps that is what the New Age Movement is really all about. We find ourselves lonely at the top. Yes, it is. 端午节快乐
 
发表评论:
姓 名:
网址或邮箱: (选填)
内 容:
验证码: 请点击后输入四位验证码,字母不区分大小写
      

     

©2009 Baidu