用Visual C 打造多頁面網頁瀏覽器

2021-04-02 09:47:30 字數 1991 閱讀 8798

一、簡介

大家都知道,目前比較流行的網路瀏覽器如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指令碼,所有的...