API函数注册ocx控件

设计思路:先将ActiveX控件载入内存,然后验证其有效性,最后直接在内存地址中执行其注册函数DllRegisterServer,UnDllRegisterServer

其编程方法:

1.使用Windows API函数LoadLibrary载入ActiveX控件

2.使用GetProcAddress函数获取ActiveX控件中注册函数DllRegisterServer(注销函数为UnDllRegisterServer)指针

3.使用CallWindowProc函数执行已载入内存的ActiveX控件注册函数(DllRegisterServer,UnDllRegisterServer)

示例

typedef int (CALLBACK* MYFUNTION)(void)

MYFUCTION MyFunction=NULL;

HINSTANCE handle=null;

handle=LoadLibrary("***.ocx");

if(handle1=NULL)

{

   MyFunction=GetProAddress(handle,"DllRegisterServer");

   if(MyFunction!=NULL)

   {MyFunction();}

}

小小经验:

1.有时候在程序中使用ocx控件时 失效,检查一下调用之间是否执行了AfxOleInit(),如果使用了容器,还需要保证执行了AfxEnableControlContainer()

2.使用ActiveX Control Test Container 可以很方便地测试制作的ocx控件

3.有时候控件制作的没有问题,注册方式也对,但是注册的时候却失败了,可能是DLL的版本不对,使用Dependences查看ocx控件依赖dll是否跟现在使用的dll版本一致

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值