VB掌管WebBrowser訪問MSHTML成員一點經驗

發表于:2007-07-14來源:作者:點擊數: 標簽:
VB 掌管WebBrowser訪問MSHTML成員雖然較VC++有限,但對大多數的應用問題不大,而且實現過程也很簡單. 一.在VB中使用WebBroswer控件 1.在VB中使用Microsoft Internet Controls做瀏覽器最方便,但遠不能盡WebBrowser之所能. VB能夠實現的一些功能如下: 掌管WebBro
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

原文轉自:http://www.anti-gravitydesign.com

国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97