ActiveX控件实现安全的初始化和脚本

该博客介绍了如何使ActiveX控件在IE中安全加载,避免“不安全”警告。通过编辑DllRegisterServer和DllUnregisterServer函数,以及添加组件分类信息,确保控件的初始化和脚本执行安全。详细步骤包括在工程文件中添加特定代码,并对比IDE自动生成的内容进行修改。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

       要想创建一个能够在IE中成功加载而没有“不安全”的警告或者错误提示信息的ActiveX控件,我们必须实现安全的初始化和脚本。基本上,所有要做的工作都是在DllRegisterServer 和DllUnregisterServer这两个函数中完成的。下面,我们就来一步步地将我们的ActiveX控件变成一个“安全的”控件。

       1. 编辑XXX(此处为控件的工程名).cpp并添加如下的代码。其中,CLSID_SafeItem的值应该跟XXXCtrl.cpp中的IMPLEMENT_OLECREATE_EX一致,这就等同于你的ActiveX控件。同样,它也应该跟你的HTML页面中的OBJECTID标签中的CLSID一致。

       以下是我工程中为实现安全的初始化和脚本添加的代码,可以与原先IDE自动生成的部分做对比查看那些部分是新增的,哪些部分是在创建ActiveX控件时自动生成的代码:

// CCEA.cpp : CCCEAApp 和 DLL 注册的实现。

#include "stdafx.h"
#include "CCEA.h"
#include "ComCat.h"
#include "strsafe.h"
#include "ObjSafe.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#endif


CCCEAApp theApp;

/*const GUID CDECL BASED_CODE _tlid =
		{ 0x5E5EBDFC, 0x6D73, 0x4652, { 0x85, 0x3, 0x3F, 0xBF, 0x94, 0x7A, 0xCA, 0xD5 } };*/
const GUID CDECL BASED_CODE _tlid =
		{ 0x1f7c5839, 0x4814, 0x4f2b, { 0xbd, 0x9e, 0x81, 0xd6, 0x2b, 0x59, 0x96, 0xaf } };
const GUID CDECL CLSID_SafeItem =
		{ 0x6f82c754, 0x6c31, 0x43ea, { 0x98, 0x18, 0xe9, 0x5a, 0xd4, 0xe8, 0x72, 0xfc } };
const WORD _wVerMajor = 1;
const WORD _wVerMinor = 0;



// CCCEAApp::InitInstance - DLL 初始化

BOOL CCCEAApp::InitInstance()
{
	BOOL bInit = COleControlModule::InitInstance();

	if (bInit)
	{
		// TODO: 在此添加您自己的模块初始化代码。
	}

	return bInit;
}



// CCCEAApp::ExitInstance - DLL 终止

int CCCEAApp::ExitInstance()
{
	// TODO: 在此添加您自己的模块终止代码。

	return COleControlModule::ExitInstance();
}

//创建Component Categories中的初始化安全和脚本安全项
HRESULT CreateComponentCategory(CATID catid, WCHAR* catDescription)
{
	ICatRegister *pcr = NULL ;
    HRESULT hr = S_OK ;
    hr = CoCreateInstance(CLSID_StdComponentCategoriesMgr, 
            NULL, CLSCTX_INPROC_SERVER, IID_ICa
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值