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

VC++ 客製化 IE 工具列按鈕與右鍵選單:註冊表部署與 COM 自動化元件整合

     編輯:VC 教學

功能架構

  1. 工具列按鈕:註冊表 HKLM\Software\Microsoft\Internet Explorer\Extensions\{GUID} 定義按鈕文字、圖示、執行路徑、提示文字。
  2. 右鍵選單:同一註冊表區域關聯 .htm 腳本頁,點選選單項由 IE 載入腳本,腳本透過 COM 自動化元件啟動應用程式。

1. 產生 GUID

使用 GUIDGEN.EXE (VS 安裝目錄 Common\Tools) 產生兩組 GUID:
工具列按鈕:{32204547-1C47-11D5-A413-00A00CC191CF}
右鍵選單:{1FBA04EE-3024-11D2-8F1F-0000F87ABD16}

2. 註冊表寫入程式碼 (MFC)


void CTestView::WriteReg()
{
    HKEY hKey; CString subKey, val;
    DWORD dwDisp;

    // --- 工具列按鈕 ---
    subKey = _T("Software\\Microsoft\\Internet Explorer\\Extensions\\{32204547-1C47-11D5-A413-00A00CC191CF}");
    RegCreateKeyEx(HKEY_LOCAL_MACHINE, subKey, 0, NULL, REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, &hKey, &dwDisp);
    RegSetValueEx(hKey, _T("ButtonText"), 0, REG_SZ, (BYTE*)_T("MyTest"), 8);
    RegSetValueEx(hKey, _T("CLSID"), 0, REG_SZ, (BYTE*)_T("{1FBA04EE-3024-11D2-8F1F-0000F87ABD16}"), 40);
    RegSetValueEx(hKey, _T("Default Visible"), 0, REG_SZ, (BYTE*)_T("Yes"), 4);
    RegSetValueEx(hKey, _T("Exec"), 0, REG_SZ, (BYTE*)GetAppPath(), len);
    RegSetValueEx(hKey, _T("HotIcon"), 0, REG_SZ, (BYTE*)_T("C:\\Test\\MyTest.exe,1"), len);
    RegSetValueEx(hKey, _T("Icon"), 0, REG_SZ, (BYTE*)_T("C:\\Test\\MyTest.exe,0"), len);
    RegSetValueEx(hKey, _T("MenuStatusBar"), 0, REG_SZ, (BYTE*)_T("啟動 MyTest"), len);
    RegSetValueEx(hKey, _T("MenuText"), 0, REG_SZ, (BYTE*)_T("MyTest"), 8);
    RegCloseKey(hKey);

    // --- 右鍵選單 ---
    subKey = _T("Software\\Microsoft\\Internet Explorer\\MenuExt\\MyContextMenu");
    RegCreateKeyEx(HKEY_LOCAL_MACHINE, subKey, 0, NULL, REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, &hKey, &dwDisp);
    RegSetValueEx(hKey, _T(""), 0, REG_SZ, (BYTE*)_T("file:///C:/Test/MySelf.htm"), len);
    RegSetValueEx(hKey, _T("Contexts"), 0, REG_DWORD, (BYTE*)&dwordVal, 4); // 0x1 = 預設、連結、圖片等
    RegCloseKey(hKey);
}

3. 右鍵選單腳本頁

MySelf.htm (放置於 C:\Test\):





4. COM 自動化元件 (AddIEFun.dll)

  1. MFC AppWizard (DLL) → 勾選 Automation。
  2. ClassWizard → Add Class → CIEcontext (基類 CCmdTarget,勾選 Creatable by Type ID)。
  3. Automation 頁 → Add Method → AddContext (返回 void,無參數)。
  4. 實作 AddContext:

void CIEcontext::AddContext()
{
    WinExec("C:\\Test\\MyTest.exe", SW_SHOWNORMAL);
}
  • 編譯產生 AddIEFun.dll、AddIEFun.tlb。
  • regsvr32 AddIEFun.dll 註冊 (或 Tools → Register Control)。
  • 部署檢查清單

    項目路徑/值
    工具列按鈕 GUID{32204547-...}
    右鍵選單 GUID{1FBA04EE-...}
    執行檔路徑RegSetValueEx "Exec" = 完整路徑
    圖示資源索引"Icon" = exe,0 ; "HotIcon" = exe,1
    腳本頁路徑MenuExt 預設值 = file:///C:/Test/MySelf.htm
    COM 元件 ProgIDAddIEFun.CIEcontext.1

    安全性提醒

    • 註冊表寫入 HKLM 需管理員權限,建議安裝程式執行。
    • COM 元件僅暴露必要方法,避免惡意腳本任意執行命令。
    • IE 7+ 保護模式可能限制 HKLM 寫入,考慮改寫 HKCU。
    1. 上一篇文章:
    2. 下一篇文章:
    Copyright © 程式碼之家 All Rights Reserved