程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> VC >> 關於VC++ >> 如何往IE工具條添加按鈕

如何往IE工具條添加按鈕

編輯:關於VC++

問題提出:

金山詞霸、網絡螞蟻等軟件安裝後會向IE的工具條添加自己的按鈕。按下按鈕後還會作出相應的動作,這種功能是如何實現的呢?讀完本文,您也可以將自己應用程序的按鈕添加到IE的工具條中。

基本原理:

從IE5開始便允許我們向工具欄添加自己的按鈕,其本質就是修改注冊表,添加創建此按鈕所需的信息。

實現步驟:

1.創建此按鈕的GUID(globally unique identifier)

你可以通過Visual Studio中的Guidgen.exe來產生GUID。

例如我生成的GUID是{1FBA04EE-3024-11D2-8F1F-0000F87ABD16}

以下的例子中我都使用這個GUID來作說明。

2.創建子鍵HKEY_LOCAL_MACHINE\Software\Microsoft\Internet Explorer\Extensions\{1FBA04EE-3024-11D2-8F1F-0000F87ABD16}

3.在此子鍵下創建如下字串值。

(1)CLSID

這是IE的CLSID,其值必須為{1FBA04EE-3024-11D2-8F1F-0000F87ABD16}

(2)Default Visible

指明此按鈕默認狀態下是否可見,Yes表示可見,No為不可見

(3)ButtonText

按鈕文字

(4)Icon

默認狀態下的圖標全路徑,例如c:\vckbase.ico。也可以是EXE文件中包含的圖標,例如:C:\PROGRA~1\NETANTS\NetAnts.exe,1000

(5)HotIcon

鼠標移到按鈕上時的圖標全路徑

如下子鍵為按下按鈕後需要執行的相應動作:可以是COM對象、浏覽條Explorer Bar、腳本Script、可執行文件。

下面我們逐個進行介紹。

①COM對象

你需要建立名為ClsidExtension的字串值,其值應該為此COM對象的GUID

例如金山詞霸就使用ClsidExtension來調用自己的COM對象。

②浏覽條Explorer Bar

所謂浏覽條就是類似我們按下往IE歷史按鈕後打開的歷史記錄列表,其本質好比MFC中的CReBar對象。 浏覽條也可以自己制作,

因為超出了本文的范圍,暫不作講解。

為了在按下按鈕後打開一個浏覽條,你需要建立名為BandCLSID的字串值,其值為浏覽條的CLSID

③腳本Script

按下按鈕後執行的腳本,例如:"%SystemRoot%\web\related.htm"

你可以在這個HTML文件裡面加上腳本來得到IE當前的許多信息,需要注意的是假如你想通過Script打開非腳本的HTML文件是不可行的。

請參考如下NetAnts取得當前頁所有鏈接的腳本代碼

<script language="VBScript">
--On Error Resume Next
--set NetAntsApi = CreateObject( "NetAnts.API" )
--if err<>0 then
-- --Alert("NetAnts not properly installed on this PC!")
--else
-- --set links = external.menuArguments.document.links
-- --ReDim params(links.length*2)
-- --params(0)=external.menuArguments.document.Url
-- --for i = 0 to links.length-1
-- -- --params(i*2+1)=links(i).href
-- -- --params(i*2+2)=links(i).innerText
-- --next
-- --NetAntsApi.AddUrlList params
--end if
</script>

我們再看一個比較有用的腳本,這段腳本的作用是得到當前地址,並打開此網址的首頁。

<script>
--//userURL得到的是當前地址,例如是http://www.vckbase.com/article/controls/index.html
--userURL=external.menuArguments.location.href;
--protocolIndex=userURL.indexOf("://",4);
--serverIndex=userURL.indexOf("/",protocolIndex + 3);
--finalURL=userURL.substring(0,serverIndex);
--external.menuArguments.open(finalURL, "_blank");///打開網址http://www.vckbase.com/
</script>

關於external等對象的具體使用方法請參閱微軟的《動態HTML開發參考大全》--人民郵電出版社出版

④可執行文件

假如我們想讓IE在按下按鈕後執行一個可執行文件, 你可以增加名為Exec的字串值,其值為此可執行文件的全路徑,

例如c:\windows\notepad.exe或者是一個網址http://www.vckbase.com/index.html

下面我們介紹一個簡單的例子。

void CIEButtonDlg::OnAdd()
{
--///這是由GUIDGEN產生的GUID:{06926B30-424E-4f1c-8EE3-543CD96573DC}
--CRegKey reg;
--char KeyName[]="Software\\Microsoft\\Internet Explorer\\Extensions\\{06926B30-424E-4f1c-8EE3-543CD96573DC}";
--TCHAR PathName[MAX_PATH];
--TCHAR IconPathName[MAX_PATH]; ///正常時的圖標全路徑
--TCHAR HotIconPathName[MAX_PATH]; ///鼠標覆蓋時的圖標全路徑
--GetModuleFileName(0,PathName,MAX_PATH); ///得到本可執行文件的路徑
--strcpy(IconPathName,PathName);
--strcpy(HotIconPathName,PathName);
--strcat(HotIconPathName,",131"); ///131是圖標的ID,你可以以資源方式打開EXE文件就可以看到所有資源及其ID
--strcat(IconPathName,",129");
--reg.Create(HKEY_LOCAL_MACHINE,KeyName);
--reg.SetValue("{1FBA04EE-3024-11D2-8F1F-0000F87ABD16}","CLSID");
--reg.SetValue("Yes","Default Visible");
--reg.SetValue("VC知識庫","ButtonText");
--reg.SetValue(IconPathName,"Icon");
--reg.SetValue(HotIconPathName,"HotIcon");
--/////假如是執行腳本,可以是reg.SetValue("c:\\test.html","Script"); ///在test.html 存放你的腳本代碼
--reg.SetValue("http://www.vckbase.com/","Exec");///打開網頁
}

在此例子中我們實現了一個按鈕,點擊它便會打開VC知識庫首頁。

具體可以參考本文提供的示例工程

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved