MFC 開發的 ActiveX 控件在瀏覽器載入常彈「腳本不安全」警告。除實現 IObjectSafety 外,修改註冊表註冊元件分類 (Component Categories) 更簡便:標記控件為「安全初始化」與「安全腳本執行」。
需包含 comcat.h、objsafe.h,定義控件 CLSID (CLSID_SafeItem)。四大輔助函數:
CreateComponentCategory(CATID, 描述):建立分類 (調用 ICatRegister::RegisterCategories)RegisterCLSIDInCategory(CLSID, CATID):將 CLSID 註冊至分類 (RegisterClassImplCategories)UnRegisterCLSIDInCategory(CLSID, CATID):反註冊 (UnRegisterClassImplCategories)DllRegisterServer:註冊類庫、類工廠後,建立並註冊兩分類:CATID_SafeForInitializing (持久化數據安全初始化)CATID_SafeForScripting (腳本安全)DllUnregisterServer:反向清理分類註冊CATID_SafeForInitializing = {7DD95801-9882-11CF-9FA9-00AA006C42C4}
CATID_SafeForScripting = {7DD95802-9882-11CF-9FA9-00AA006C42C4}
MFC 專案中修改 DllRegisterServer/UnregisterServer 即可,無需修改控件類代碼。ATL 專案建議直接勾選專案向導的「Support IObjectSafety」選項。測試:IE 載入控件不再彈警告,腳本可直接調用方法/屬性。