Band Object 是 IE 與 Windows Shell 共用的可停駐 UI 元件,分為四種類型:垂直/水平瀏覽器頻條、IE 工具列、桌面工具列。本文詳細解析 COM 介面實現、註冊表部署、ATL 專案建立全流程,附完整原始碼架構。
| Band 類型 | 顯示位置 | 元件分類 CATID |
|---|---|---|
| 垂直瀏覽器頻條 | IE 左/右側 | CATID_InfoBand (00021493-...) |
| 水平瀏覽器頻條 | IE 頂/底部 | CATID_CommBand (00021494-...) |
| 桌面工具列 | 工作列右鍵選單 | CATID_DeskBand (00021492-...) |
| IE 工具列 | IE 工具列區 | HKLM\Software\Microsoft\Internet Explorer\Toolbar\{CLSID} |
IPersistStreamInitImpl + PROP_MAP 實作。SetSite(pUnkSite) 為初始化/釋放核心。IOleWindow→GetWindow;IInputObjectSite;IServiceProvider→QueryService(SID_SWebBrowserApp) 取得 IWebBrowser2 並建立連接點接收 DWebBrowserEvents2。GetBandInfo 回傳標題、最小/最大尺寸、整數倍、模式旗標(如 DBIMF_VARIABLEHEIGHT)。ShowDW/CloseDW/ResizeBorderDW 控制視窗顯示/銷毀/邊框調整。IInputObject:UIActivateIO(焦點切換)、HasFocusIO、TranslateAcceleratorIO。IOleCommandTarget:透過 IInputObjectSite→QueryInterface 取得,支援命令:DBID_BANDINFOCHANGED、DBID_MAXIMIZEBAND、DBID_SHOWONLY、DBID_PUSHCHEVRON。HKCR\CLSID\{CLSID} (Default)=選單文字、InProcServer32、ThreadingModel=Apartment。Instance\CLSID = {4D5C8C2A-D075-11D0-B416-00C04FB90376}Instance\InitPropertyBag\Url = HTML 檔路徑。HKLM\...\Toolbar\{CLSID} 建立值。.rgs 檔即可自動註冊,範本見文中完整 HKCR/HKLM 區塊。IObjectWithSite 支援)。VerBar),執行緒模型 Apartment,介面 Dual(需事件),聚合非 Only。_AtlAxCreateControl → 專案設定 Link 加入 atl.lib 或 #pragma comment(lib,"atl")。IEXPLORE.EXE。掌握 Band Object 架構,即可為 IE/Shell 擴充任意專業級側邊欄或工具列功能。