ActiveX控件注册的几种方法

-----ActiveX控件是一个动 态链接库,是作为基于COM服务器进行操作的,并且可以嵌入在包容器宿主应用程序中,ActiveX控件的前身就是OLE控件。由于ActiveX控件与 开发平台无关,因此,在一种编程语言上开发的ActiveX控件可以无须作任何修改,即可在另一种编程语言中使用,其效果如同使用Windows通用控件 一样。如:在VC++中开发的ActiveX控件,不作任何修改即可应用于VB中。由此可见,通过使用ActiveX控件即可实现快速小型的组件重用、代 码共享,从而提高编程效率。

----从Internet下载的ActiveX控件,或从其他途径得到的ActiveX控件,用户应该怎样 做才能正确使用呢?一般来说,一个外来ActiveX控件要在Windows中被正确使用,首先必须将控件文件(*.OCX)复制到硬盘中,然后将其在 Windows中注册,未在Windows中注册过的ActiveX控件是不能使用的。注册ActiveX控件一般来说有三种途径,适用范围不同,各有各的优点,下面分别讨论。

一、使用Regsvr32.exe程序对ActiveX控件进行注册

----对于未注册过的ActiveX控件可使用此软件对其进行注册,外来ActiveX控件要应用到自己的程序中也必须进行注册。该文件位于Windows目录的system子目录下。使用方法如下:点击“开始”→“运行”;在运行对话框中输入以下命令: regsvr32 /s <文件名> 注册一个ActiveX控件且不管注册成功与否,均不显示提示框 regsvr32 /u <文件名> 解除某ActiveX控件的注册

----我们使用一些带ActiveX控件的应用程序时,有时会出现不能运行的情况,这有可能是其自带ActiveX控件未注册所至,这时不妨使用上述命令一试。

#二、使用安装程序注册 ---- 使用regsvr32.exe来注册ActiveX控件虽然简单,但需要用户手工注册,在不用时还得手工解除注册,因此,这对一个应用程序来说并非好的解决方案。大型应用软件一般都有一个安装程序,在安装程序中解决ActiveX控件注册是较为理想的一种方案。使用InstallShield可以制作出专业级的Setup,还可注册其中的ActiveX控件;而且,在以后携载软件时,自动注销掉以前注册的ActiveX控件。方法如下: 启动InstallShield,使用ProjectWizard建立一个新的项目; 新建一个“FileGroup”,将需要注册的ActiveX控件文件放入此“FileGroup”中; 将上述“FileGroup”的“Self-Registered”属性设置成“Yes”。

----在NSIS中有命令可以注册DLL、OCX等文件,代码如: regdll "$instdir\xxx.dll" unregdll "$instdir\xxx.dll" (反注册)

三、在应用程序中加入注册代码

----对于小型程序不宜采取第二种方法,较好的方法是在程序中嵌入注册代码,实现应用程序自注册。其编程方法是: 使用WindowsAPI函数LoadLibrary载入ActiveX控件; 使用GetProcAddress函数获取ActiveX控件中注册函数DllRegisterServer(注销函数为DllUnregisterServer)指针; 调用注册函数DllRegisterServer(或注销函数DllUnregisterServer)。

BOOL RegisterOCX(LPCTSTR OcxFileName)
{
	LPCTSTR pszDllName = OcxFileName ; //ActiveX控件的路径及文件名
	HINSTANCE hLib = LoadLibrary(pszDllName); //装载ActiveX控件
	if (hLib < (HINSTANCE)HINSTANCE_ERROR)
	{
		return FALSE ;
	}
	FARPROC lpDllEntryPoint;
	lpDllEntryPoint = GetProcAddress(hLib,("DllRegisterServer")); //获取注册函数DllRegisterServer地址
	if(lpDllEntryPoint!=NULL) //调用注册函数DllRegisterServer
	{
		if(FAILED((*lpDllEntryPoint)()))
		{
			DWORD dwError = GetLastError();
			FreeLibrary(hLib);
			return FALSE ;
		}
		return TRUE ;
	}
	else
		return FALSE ;
}
复制代码

转载于:https://juejin.im/post/5a378598518825258a5fbf2c

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值