程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> VC >> vc教程 >> 用VC在IE浏覽器的工具條上添加命令按鈕

用VC在IE浏覽器的工具條上添加命令按鈕

編輯:vc教程

  不知道讀者朋友注意到沒有,金山詞霸、網絡螞蟻等應用軟件在電腦上安裝後會向IE浏覽器的工具條添加自己的按鈕,用戶按下按鈕後IE會啟動對應的軟件,作出相應的動作。上述這種功能是如何實現的呢?本實例介紹了一種實現方法,可以將自己應用程序的按鈕添加到IE的工具條中。

  一、實現方法

  微軟從IE5.0開始便允許開發人員向其工具欄中添加按鈕,其實現方法的本質就是修改注冊表,添加創建此按鈕所需的信息。首先要創建此按鈕的GUID(globally unique identifIEr),這個GUID可以通過Visual Studio中的Guidgen.exe來產生。例如一個生成的GUID是{1FBA04EE-3024-11D2-8F1F-0000F87ABD16}(本例在以下的敘述中都使用這個GUID來作說明)。有了GUID值後,要在Windows注冊表中創建子鍵:

HKEY_LOCAL_MacHINESoftwareMicrosoftInternet ExplorerExtensions{1FBA04EE-3024-11D2-8F1F-0000F87ABD16}

  在此子鍵下創建如下字串值:

  1)CLSID

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

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

  3)ButtonText

  按鈕文字

  4)Icon

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

  5)HotIcon

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

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

  ①COM對象

  你需要建立名為ClsidExtension的字串值,其值應該為此COM對象的GUID,例如金山詞霸就使用ClsidExtension來調用自己的COM對象。

  ②浏覽條Explorer Bar

  所謂浏覽條就是類似我們按下往IE歷史按鈕後打開的歷史記錄列表,其本質好比MFC中的CReBar對象。 浏覽條也可以自己制作,因為超出了本文的范圍,暫不作講解。 為了在按下按鈕後打開一個浏覽條,你需要建立名為BandCLSID的字串值,其值為浏覽條的CLSID。

  ③腳本Script

  按下按鈕後執行的腳本,例如:"%SystemRoot%web elated.htm",你可以在這個HTML文件裡面加上腳本來得到IE當前的許多信息,需要注意的是假如你想通過Script打開非腳本的Html文件是不可行的。請參考如下NetAnts取得當前頁所有唇擁慕瘧敬?BR>
<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.yesky.com
userURL=external.menuArguments.location.href;
protocolIndex=userURL.indexOf("://",4);
serverIndex=userURL.indexOf("/",protocolIndex + 3);
finalURL=userURL.substring(0,serverIndex);
external.menuArguments.open(finalURL, "_blank");//打開網址;
</script>

  ④可執行文件

  假如想讓IE在按下按鈕後執行一個可執行文件, 可以增加名為Exec的字串值,其值為此可執行文件的全路徑,例如c:Windows otepad.exe或者是一個網址http://www.yesky.Net
有了上面的知識,就可以通過修改注冊表來實現向IE工具條添加按鈕的功能了。


  二、編程步驟

  1、啟動Visual C++6.0,生成一個基於對話框的應用程序,將程序命名為"IEButton";

  2、修改應用程序對話框中的按鈕,其標題分別為"添加"和"退出";

  3、使用Class Wizard為應用程序的"添加"按鈕添加鼠標單擊的消息響應函數OnAdd();

  4、添加代碼,編譯運行程序。 

  三、程序代碼

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("天極網","ButtonText");
 reg.SetValue(IconPathName,"Icon");
 reg.SetValue(HotIconPathName,"HotIcon");
 /////假如是執行腳本,可以是reg.SetValue("c:\test.html","Script"); ///在test.Html 存放你的腳本代碼<br>
 reg.SetValue("http://www.yesky.com/","Exec");///打開網頁
}

  四、小結

  本實例介紹了在IE工具欄中添加按鈕的方法和思路,讀者朋友們可以在消化吸收的基礎上,把自己開發的應用程序添加到IE中,為實現自我宣傳增加一種方法和途徑。

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