編寫在瀏覽器中不彈出警告的ActiveX控制元件

double2li發表於2014-03-17

我們在編寫ActiveX控制元件時,如果用在瀏覽器中,經常都會彈出現在執行的指令碼不安全的提示, 如果給客戶使用,將會帶來極大不便。按照MSDN的介紹通常有兩種一種是實現IObjectSafe介面,一種是通過修改登錄檔的方法。一般如果用ATL開發ActiveX控制元件,就用實現ObjectSafe介面的方法。如果用MFC開發,我覺得還是用修改登錄檔的方法比較方便。下面我們將第二種方法:

要包括兩個檔案

1.#include "comcat.h"
2.#include "Objsafe.h"

// 本控制元件的CLSID,登錄檔用

1.const GUID CDECL CLSID_SafeItem =
2.{ 0x7AE7497B, 0xCAD8, 0x4E66, { 0xA5,0x8B,0xDD,0xE9,0xBC,0xAF,0x6B,0x61 } };

// 建立元件種類

01.HRESULT CreateComponentCategory(CATID catid, WCHAR* catDescription)
02.{
03.ICatRegister* pcr = NULL ;
04.HRESULT hr = S_OK ;
05. 
06.hr = CoCreateInstance(CLSID_StdComponentCategoriesMgr,
07.NULL, CLSCTX_INPROC_SERVER, IID_ICatRegister, (void**)&pcr);
08.if (FAILED(hr))
09.return hr;
10. 
11.// Make sure the HKCRComponent Categories{..catid...}
12.// key is registered.
13.CATEGORYINFO catinfo;
14.catinfo.catid = catid;
15.catinfo.lcid = 0x0409 ; // english
16. 
17.// Make sure the provided description is not too long.
18.// Only copy the first 127 characters if it is.
19.int len = wcslen(catDescription);
20.if (len>127)
21.len = 127;
22.wcsncpy(catinfo.szDescription, catDescription, len);
23.// Make sure the description is null terminated.
24.catinfo.szDescription[len] = ``

相關文章