使用ActiveXControl控件可快速实现小型组件重用、代码共享从而提高编程效率降低开发成本但是ActiveXControl控件对于最终用户并不能直接使用ActiveXControl控件必须先在Windows中注册注册ActiveXControl控件般来说有 6种途径它们有各自优点运用范围也区别
Regsvr32.exe注册
Regsvr32.exe位于Windows目录system子目录下点击Windows“开始→运行”菜单在对话框中输入以下命令:
regsvr32 netshare.ocx &&注册netshare.ocxControl控件
regsvr32 /u netshare.ocx &&解除netshare.ocxControl控件注册
如果netshare.ocx文件不在system目录时还必须在文件名前加上完整路径除了regsvr32应用的外Microsoft在它Web站点上还提供了个称为regclean.exe可以检查注册表并去掉丢失组件在注册表中条目regclean.exe除了可以删除“悬挂”条目它还提供个“undo”文件帮助恢复删除
卧龙传说提醒:用regsvr32.exe注册ActiveXControl控件虽然简单但需要用户手工进行注册在不用时还需手工解除注册
VFP环境注册
在我们进行设计时VFP本身提供个注册ActiveXControl控件思路方法
进入VFP环境选择“工具→选项”菜单点击“Control控件”页选中“ActiveXControl控件”单选按钮在列表框里显示所有已经注册ActiveXControl控件这时点击右边“添加”按钮选择需要注册ActiveXControl控件文件“确定”后完成注册也可以在表单设计器表单Control控件工具栏里拖动“OLE”按钮到表单在弹出选择框里选中“插入Control控件”单选钮同样点击右边“添加Control控件”按钮来完成新Control控件注册
卧龙传说提醒:本思路方法仅适合员在设计过程中手工进行对用户而言并没有实现在本地机上自动注册
安装注册
大型应用软件Software般都有个安装在安装中解决ActiveXControl控件注册是较为理想种方案
在用户执行安装时这些ActiveXControl控件将自动在用户机器上安装并注册
VFP7.0光盘所带InstallShield是目前较为流行制作安装工具使用它可以制作出专业级Setup安装还可以注册应用使用到ActiveXControl控件而且在以后使用控制面板“添加/删除”卸载该软件Software时安装会自动注销掉以前注册ActiveXControl控件
加入代码注册
首先定义个注册Control控件:
Function MyRegsvr ( lpcRegFilename, lplIsreg )
If File(lpcRegFilename)
lpcRegFilename = i(llisreg, lpcRegFilename, [ /u ] + lpcRegFilename)
Run /n regsvr32 &&lpcRegFilename
End
Return
Endfunc
然后就可以通过以下语句来该并完成ActiveXControl控件注册了(卧龙传说提醒:定要注意Control控件文件路径哦)
= MyRegsvr( "netshare.ocx", .T.) &&注册netshare.ocxControl控件
= MyRegsvr( "netshare.ocx", .F.) &&解除netshare.ocxControl控件注册
注册注册
上面提到运行regsvr32.exe应用将弹出注册是否成功对话框注意看内容“DllRegisterServer in netshare.ocx succeeded”或“UnDllregisterServer...”其实通常每个可用ActiveXControl控件都有DllRegisterServer、UnDllregisterServer这两个自注册包含在其中我们可以用定义API思路方法(Declare <名> in <文件名> ... )来定义它然后直接使用该来进行注册和反注册
同样我们先自定义个注册(卧龙传说提醒:请注意DllRegisterServer、UnDllregisterServer大小写):
Function DllRegister (lpLibFileName,isReg)
isReg = i(type("isReg")="U", .T., isReg)
lpProcName = i(isReg, "DllRegisterServer", "DllUnregisterServer" )
Declare INTEGER (lpProcName) in (lpLibFileName)
&&lpProcName.
Endfunc
然后就可以通过该来完成ActiveXControl控件注册了
= DllRegister( "netshare.ocx", .T.) &&注册返回0表示成功
= DllRegister( "netshare.ocx", .F.) &&注销返回0表示成功
Clear Dlls
试试是不是没有了弹出框烦恼!
卧龙传说提醒:该思路方法没有对ActiveXControl控件文件验证假如该Control控件没有有效DllRegisterServer功能(即不具有自注册功能)也就找不到以上两个API照样会有信息弹出
API注册
此思路方法设计思路是:先将ActiveXControl控件载入内存然后验证其有效性最后直接在内存地址中执行其注册(DllRegisterServer、UnDllregisterServer)其编程思路方法是:
1、使用Windows APILoadLibrary载入ActiveXControl控件;
2、使用GetProcAddress获取ActiveXControl控件中注册DllRegisterServer(注销为DllUnregisterserver)指针;
3、使用CallWindowProc执行已载入内存ActiveXControl控件注册(DllRegisterServer、UnDllregisterServer)
上面所述ActiveXControl控件注册思路方法各有特点经实际使用效果良好您可根据实际情况灵活选用
最新评论