一、簡介
大家都知道,目前比較流行的網路瀏覽器如mozilla firefox以及myie2等都具有多頁面瀏覽功能,每開啟乙個新的頁面都自動產生乙個新的選項卡頁面,頁面的關閉也十分簡便。這種設計思想使得使用者在瀏覽多個網頁時桌面十分簡潔,也避免了使用者等待單頁面顯示的苦惱。由於這些瀏覽器一般都支援操作多種檔案格式,所以當瀏覽本地機器上的多個檔案時也極為方便。
二、關鍵技術分析public class he_webbrowsertag
三、實現「查詢」、「檢視頁面原始檔」、「選項」對話方塊等功能
注意 本例程中使用了乙個未公開的guid,其在將來的系統中可以發生變更。
1、定義 iolecommandtarget 介面
為定義乙個.net介面以獲得關於乙個com介面的參考,請遵從下列步驟:
1) 賦予.net介面相應的com介面的guid值;
2) 包含對介面中所有方法的型別宣告;
3) 包含對mshtml.dll和shdocvw.dll檔案的參考,在visual c# .net工程中操作,請遵從:
a. 在專案選單下單擊「新增引用」;
b. 單擊「com」 選項卡;
c. 雙擊「microsoft html object library」 和「microsoft internet controls」。
4) 應該在程式命名空間宣告之前,包含下面的介面宣告以新增對microsoft html (mshtml) iolecommandtarget介面的參照引用:
using system;
using system.runtime.interopservices;
[structlayout(layoutkind.sequential,charset=charset.unicode)]
public struct olecmdtext
[structlayout(layoutkind.sequential)]
public struct olecmd
// iolecommandtarget的interop定義
[comimport,
guid("b722bccb-4e68-101b-a2bc-00aa00404770"),
inte***cetype(cominte***cetype.inte***ceisiunknown)]
public inte***ce iolecommandtarget
2、為cgid_iwebbrowser定義乙個guid
必須定義cgi_iwebbrowser的guid以通知mshtml如何來處理你的命令id。在.net中實現如下:
private guid cmdguid = new guid("ed016940-bd5b-11cf-ba4e-00c04fd70816");
private enum misccommandtarget
3、呼叫exec()方法
注意,下列三個過程成功呼叫exec()的前提是,已經存在名為webbrowser的瀏覽器控制項的被包容例項。
private mshtml.htmldocument getdocument()
catch
}//檢視原始碼的方法
public void viewsource()
catch(exception e)
}public void find()
catch(exception e)
}//顯示「選項」對話方塊的方法
public void internetoptions()
catch
}
四、總結
本文通過c#編例,詳細介紹如何實現一種多頁面瀏覽程式的基本原理。歡迎同仁批評指正。 另外,本文所附源程式在windows 2000/.net 2003/internet explorer 6平台上除錯通過。
用Visual C 打造多頁面網頁瀏覽器
注意,每乙個webbrowser控制項都有乙個tag,我定義成乙個簡單的class,它用來包含一些該控制項相關的獨有資訊。請看 public class he webbrowsertag 三 實現 查詢 檢視頁面原始檔 選項 對話方塊等功能 注意 本例程中使用了乙個未公開的guid,其在將來的系統中...
用yui打造自己的拖放式網頁
第一次看到可以在網頁中像客戶端軟體一樣拖放是在3721 上,當時看了半天沒有看明白。現在這種技術的應用已經很多了,其中我們感受最深的就是sohu,sina部落格的定置布局功能,相比於普通的其他網頁,相信大家都能感覺到其優勢的存在。下面是我結合例子做的乙個分析 上面5條語句是包含的yui指令碼,所有的...
用yui打造自己的拖放式網頁
第一次看到可以在網頁中像客戶端軟體一樣拖放是在3721 上,當時看了半天沒有看明白。現在這種技術的應用已經很多了,其中我們感受最深的就是sohu,sina部落格的定置布局功能,相比於普通的其他網頁,相信大家都能感覺到其優勢的存在。下面是我結合例子做的乙個分析 上面5條語句是包含的yui指令碼,所有的...