设计浏览器不弹出警告地ActiveX控件
我们在编写ActiveX控件时,如果在浏览器中使用,经常会弹出现在运行的脚本不安全的提示,给客户带来很大的不便。
根据MSDN的介绍,通常有两种方式:一是实现IObjectSafe接口,二是修改注册表。一般如果用ATL开发ActiveX控件,就用实现IObjectSafe接口的方法。如果用MFC开发,我觉得修改注册表更方便。下面是第二种方法:
包含两个文件
# include " comcat . h "
# include " obj safe . h "
//此控件的CLSID,注册表使用
const guid CDECL CLSID _ safe item = { 0x7ae 7497 b,0xcad8,0x4e66,
{0xa5,0x8b,0xdd,0xe9,0xbc,0xaf,0x6b,0x61 } }
//版本控制
const WORD _ wver major = 1;
//次要版本号
const WORD _ wVerMinor = 0;
//////////////////////////////////////////////////////////
//CICCardApp::InitInstance-DLL初始化
BOOL CICCardApp::init instance()
{
BOOL bInit = COleControlModule::init instance();
if (bInit)
{
}
返回bInit
}
////////////////////////////////////////////////////////////
//CICCardApp::exit instance-DLL终止
int CICCardApp::exit instance()
{
return COleControlModule::exit instance();
}
////////////////////////////////////////////////
//创建组件类别
hresult createcomponentcategory(CATIC CATID,WCHAR * CAT Description)
{
ICAT register * PCR = null;
HRESULT HR = S _ OK;
HR = cocreate instance(CLSID _ StdComponentCategoriesMgr,
NULL,CLSCTX_INPROC_SERVER,IID_ICatRegister,(void * *)& PCR);
if(失败(HR))
返回HR;
//确保HKCR \组件类别\{..类别...}
//密钥已注册。
类别信息catinfo
catinfo . catid = catid;
ca tinfo . lcid = 0x 0409;//英语
//确保提供的描述不要太长。
//如果是,只复制前127个字符。
int len = wcs len(cat description);
if(len > 127)
len = 127;
wcsncpy(catinfo . SZ description,catDescription,len);
//确保描述以null结尾。
ca tinfo . SZ description[len]= ' \ 0 ';
hr = pcr->RegisterCategories(1,& ca tinfo);
PCR-> Release();
回报HR;
}
0条评论