ActiveX 控 件 注 册 的几 种 方 法[转]接上篇

 
编 译 联 接 上 述 程 序, 即 可 得 一 个 可 执 行 文 件。 另 需 注 意
的 是: 应 将ActiveX 控 件 文 件toweratl.ocx 复 制 到Windows 的system
目 录 下。 控 件 文 件toweratl.ocx 在 微 软 出 版 的《Visual C + +
6.0 程 序 员 指 南》 所 附 光 盘 中 可 以 找 到。
测 试 上 述 程 序: 运 行《Visual C + + 6.0 程 序 员 指 南》 所 附
光 盘 中 的game2 程 序, 若 使 用RegActivex 注 册 了toweratl.ocx 控 件
, 则 该 程 序 可 以 正 常 运 行; 若 使 用RegActivex 注 销 了
toweratl.ocx 控 件 则game2 不 能 运 行。
///
方法一:在DOS或Windows命令行下运行:regsvr32 ocxname.OCX 注册
示例:
regsvr32 netshare.ocx     //注册netshare.ocx控件
  regsvr32 /u netshare.ocx    //解除netshare.ocx控件的注册
如果netshare.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 ();
}
       }

小小经验:
1、有时候在程序中使用OCX控件时失效,检查一下调用之间是否执行了AfxOleInit()。如果使用了容器,还需要保证执行了AfxEnableControlContainer()
2、使用ActiveX Control Test Container可以很方便地测试制作出来的OCX控件(从开始菜单-》程序-》Microsoft Visual Studio 6.0 -> Microsoft Visual Studio 6.0 tools可以看到该工具)
3、有时候控件制作的没有问题,注册方式也对,但是注册的时候确失败了,可能时DLL的版本不对,使用Dependencies查看OCX控件依赖DLL是否跟现在使用的DLL版本一致

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值