发布网友 发布时间:2022-04-19 10:19
共1个回答
热心网友 时间:2023-05-31 11:49
方法一:在DOS或Windows命令行下运行:regsvr32 mscomm32.ocx 注册
示例:
regsvr32 mscomm32.ocx //注册mscomm32.ocx 控件
regsvr32 /u mscomm32.ocx //解除mscomm32.ocx 控件的注册
如果mscomm32.ocx 文件不在system目录时,还必须在文件名前加上完整的路径。除了regsvr32应用程序之外,Microsoft在它的Web站点上还提供了一个称为regclean.exe的程序,可以检查注册表并去掉丢失的组件在注册表中的条目。regclean.exe除了可以删除“悬挂”的条目,它还提供一个“undo”文件帮助恢复错误的删除。
用regsvr32.exe注册ActiveX控件虽然简单,但需要用户手工进行注册,在不用时还需手工解除注册。
方法二:用Install Shield,在里面选“Self-Registered”,安装程序将自动注册
方法三:API函数注册
此方法的设计思路是:先将ActiveX控件载入内存,然后验证其有效性,最后直接在内存地址中执行其注册函数(DllRegisterServer、UnDllregisterServer)。其编程方法是:
1、使用Windows API函数LoadLibrary载入ActiveX控件;
2、使用GetProcAddress函数获取ActiveX控件中注册函数DllRegisterServer(注销函数为DllUnregisterserver)指针;
3、使用CallWindowProc函数执行已载入内存的ActiveX控件注册函数(DllRegisterServer、UnDllregisterServer)。
示例:
typedef int (CALLBACK* MYFUNCTION)(void);
MYFUNCTION MyFunction = NULL;
HINSTANCE handle = NULL ;
handle = LoadLibrary( "TRDragDropTreeCtrl.ocx ");
if( handle != NULL )
{
MyFunction = GetProcAddress(handle, "DllRegisterServer ");
if( MyFunction != NULL )
{
MyFunction();
}
}