首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> VC >> 關於VC++

如何在 Internet Explorer 工具列新增自訂按鈕

     編輯:關於VC++

許多知名軟體(如金山詞霸、網絡螞蟻)安裝後,都會在 Internet Explorer 的工具列上加入專屬按鈕,點擊即可觸發特定功能。這篇文章將詳細說明如何透過修改登錄檔,將你自己的應用程式按鈕加入 IE 工具列中。

核心原理

從 IE 5 版本開始,微軟允許開發者向工具列添加自訂按鈕。其本質是在登錄檔中建立必要的鍵值,提供建立按鈕所需的資訊,包括圖示、提示文字、點擊後的行為邏輯等。

實作步驟

1. 產生按鈕的 GUID

使用 Visual Studio 工具集中的 Guidgen.exe 產生全域唯一識別碼。範例 GUID:{1FBA04EE-3024-11D2-8F1F-0000F87ABD16},下文將以此為例說明。

2. 建立登錄檔子機碼

路徑:HKEY_LOCAL_MACHINE\Software\Microsoft\Internet Explorer\Extensions\{你的GUID}

3. 在子機碼下建立必要的字串值

  • CLSID:固定值 {1FBA04EE-3024-11D2-8F1F-0000F87ABD16},代表 IE 擴充功能的類別識別碼。
  • Default Visible:Yes(預設顯示)或 No(預設隱藏)。
  • ButtonText:工具列上顯示的按鈕文字。
  • Icon:預設狀態圖示完整路徑,如 c:\vckbase.ico 或 EXE 內嵌圖示 C:\PROGRA~1\NETANTS\NetAnts.exe,1000。
  • HotIcon:滑鼠懸停時的圖示完整路徑。

4. 定義按鈕點擊後的行為

可支援四種行動模式,任選其一:

① COM 物件

建立 ClsidExtension 字串值,值為該 COM 物件的 GUID。金山詞霸即採用此方式呼叫自身 COM 元件。

② 檔案總管列

類似點擊 IE 歷史記錄按鈕展開的側邊欄。建立 BandCLSID 字串值,值為列的 CLSID。自訂列的製作超出本文範圍,不再贅述。

③ 指令碼

建立 Script 字串值,指向 HTML 檔案路徑(如 %SystemRoot%\web\related.htm)。在 HTML 中撰寫 VBScript 或 JavaScript,可透過 external.menuArguments 取得目前網頁資訊。

範例:網絡螞蟻取得所有連結

<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 = external.menuArguments.location.href;
protocolIndex = userURL.indexOf("://", 4);
serverIndex = userURL.indexOf("/", protocolIndex + 3);
finalURL = userURL.substring(0, serverIndex);
external.menuArguments.open(finalURL, "_blank");
</script>

④ 可執行檔

建立 Exec 字串值,值為執行檔完整路徑或網址(如 c:\windows\notepad.exe 或 https://www.vckbase.com/index.html)。

完整程式碼範例

以下 MFC 程式碼示範在按鈕點擊時開啟 VC 知識庫首頁:

void CIEButtonDlg::OnAdd()
{
    // 由 GUIDGEN 產生
    CRegKey reg;
    char KeyName[] = "Software\\Microsoft\\Internet Explorer\\Extensions\\{06926B30-424E-4f1c-8EE3-543CD96573DC}";
    TCHAR PathName[MAX_PATH], IconPathName[MAX_PATH], HotIconPathName[MAX_PATH];
    
    GetModuleFileName(0, PathName, MAX_PATH);
    strcpy(IconPathName, PathName);
    strcpy(HotIconPathName, PathName);
    strcat(HotIconPathName, ",131");  // 圖示資源 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");
    reg.SetValue("https://www.vckbase.com/", "Exec");  // 開啟網頁
}

更多細節請參考本文附帶的示範專案原始碼。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved