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

程式控制 IE 瀏覽器工具列顯示/隱藏 (收藏夾、歷史、搜尋等)

     編輯:VC 教學

應用場景

需要在應用程式中以程式碼控制所有開啟的 IE 視窗左側工具列 (如「收藏夾」、「歷史記錄」、「搜尋」、「資料夾」) 的顯示或隱藏。

實作原理

  1. 透過 ShellWindows 物件遍歷所有 Shell 視窗 (包含 IE 與檔案總管)。
  2. 取得每個視窗的 IWebBrowser2 介面。
  3. 依據 LocationURL 判斷是否為檔案總管 (以 file: 開頭),若是則跳過。
  4. 呼叫 IWebBrowser2::ShowBrowserBar 方法,傳入工具列的 CLSID、顯示/隱藏旗標、大小參數。

常用工具列 CLSID

工具列名稱CLSID
收藏夾{EFA24E61-B078-11d0-89E4-00C04FC9E26E}
資料夾{EFA24E64-B078-11d0-89E4-00C04FC9E26E}
歷史記錄{EFA24E62-B078-11d0-89E4-00C04FC9E26E}
搜尋{30D02401-6A81-11d0-8274-00C04FD5AE38}

核心程式碼片段

#pragma link "bcbie.lib"
#include "SHDocVw_OCX.h"

void __fastcall MyShowIEBrowserBar(LPSTR lpCLSID, bool bShow)
{
    Variant v1 = String(lpCLSID), v2 = bShow, v3 = 0;
    TCppShellWindows *pShellWin = new TCppShellWindows(NULL);
    for (int i = 0; i < pShellWin->Count; i++)
    {
        IDispatch *pDisp = (IDispatch*)pShellWin->Item(Variant(i));
        if (!pDisp) continue;
        IWebBrowser2 *pBrowser;
        if (SUCCEEDED(pDisp->QueryInterface(IID_IWebBrowser2, (void**)&pBrowser)))
        {
            pDisp->Release();
            String strUrl = pBrowser->get_LocationURL();
            if (strUrl.LowerCase().SubString(1,5) == "file:") continue; // 排除檔案總管
            pBrowser->ShowBrowserBar(v1, v2, v3);
        }
    }
    delete pShellWin;
}

// 使用範例:
// MyShowIEBrowserBar("{EFA24E61-B078-11d0-89E4-00C04FC9E26E}", true);  // 顯示收藏夾
// MyShowIEBrowserBar("{30D02401-6A81-11d0-8274-00C04FD5AE38}", false); // 隱藏搜尋

此函數經測試可直接在 C++ Builder 中使用,需專案加入 bcbie.lib 並包含 SHDocVw_OCX.h。

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