上一篇:WINDOWS数据类型 >>
注册ActiveX控件的几种方法
使用ActiveX控件可快速实现小型的组件重用、代码共享,从而提高编程效率,降低开发成本。但是ActiveX控件对于最终用户并不能直接使用,因为ActiveX控件必须先在Windows中注册。注册ActiveX控件一般来说有六种途径,它们有各自的优点,运用范围也不同。
Regsvr32.exe注册
Regsvr32.exe位于Windows目录的system子目录下。点击Windows的“开始→运行”菜单,在对话框中输入以下命令:
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控件虽然简单,但需要用户手工进行注册,在不用时还需手工解除注册。
VFP环境注册
在我们进行程序设计时,VFP本身提供一个注册ActiveX控件的方法。
进入VFP环境,选择“工具→选项”菜单,点击“控件”页,选中“ActiveX控件”单选按钮,在列表框里显示所有已经注册的ActiveX控件,这时,点击右边的“添加”按钮,选择需要注册的ActiveX控件文件,“确定”后完成注册。也可以在表单设计器的表单控件工具栏里拖动“OLE”按钮到表单,在弹出的选择框里选中“插入控件”单选钮,同样点击右边的“添加控件”按钮,来完成新控件的注册。
卧龙传说提醒:本方法仅适合程序员在设计程序过程中手工进行,对用户而言,并没有实现在本地机上自动注册。
安装程序注册
大型应用软件一般都有一个安装程序,在安装程序中解决ActiveX控件的注册是较为理想的一种方案。
在用户执行安装程序时,这些ActiveX控件将自动在用户机器上安装并注册。
VFP7.0光盘所带的InstallShield是目前较为流行的制作安装程序的工具,使用它可以制作出专业级的Setup安装程序,还可以注册应用程序使用到的ActiveX控件。而且,在以后使用控制面板的“添加/删除程序”卸载该软件时,安装程序会自动注销掉以前注册的ActiveX控件。
加入代码注册
首先,定义一个注册控件的函数:
Function MyRegsvr ( lpcRegFilename, lplIsreg )
If File(lpcRegFilename)
lpcRegFilename = iif(llisreg, lpcRegFilename, [ /u ] + lpcRegFilename)
Run /n regsvr32 &&lpcRegFilename
Endif
Return
Endfunc
然后就可以通过以下语句来调用该函数,并完成ActiveX控件的注册了(卧龙传说提醒:一定要注意控件文件的路径哦)。
= MyRegsvr( "netshare.ocx", .T.) &&注册netshare.ocx控件
= MyRegsvr( "netshare.ocx", .F.) &&解除netshare.ocx控件的注册
注册函数注册
上面提到运行regsvr32.exe应用程序将弹出注册是否成功的对话框,注意看内容“DllRegisterServer in netshare.ocx succeeded”或“UnDllregisterServer...”,其实,通常每个可用的ActiveX控件都有DllRegisterServer、UnDllregisterServer这两个自注册函数包含在其中,我们可以用定义API函数的方法(Declare <函数名> in <文件名> ... )来定义它,然后直接使用该函数来进行注册和反注册。
同样,我们先自定义一个注册函数(卧龙传说提醒:请注意DllRegisterServer、UnDllregisterServer的大小写):
Function DllRegister (lpLibFileName,isReg)
isReg = iif(type("isReg")="U", .T., isReg)
lpProcName = iif(isReg, "DllRegisterServer", "DllUnregisterServer" )
Declare INTEGER (lpProcName) in (lpLibFileName)
return &&lpProcName.()
Endfunc
然后,就可以通过该函数来完成ActiveX控件的注册了。
= DllRegister( "netshare.ocx", .T.) &&注册,返回0表示成功
= DllRegister( "netshare.ocx", .F.) &&注销,返回0表示成功
Clear Dlls
试试,是不是没有了弹出框的烦恼!
卧龙传说提醒:该方法没有对ActiveX控件文件的验证,假如该控件没有有效的DllRegisterServer功能(即不具有自注册功能),也就找不到以上的两个API函数,照样会有错误信息弹出。
API函数注册
此方法的设计思路是:先将ActiveX控件载入内存,然后验证其有效性,最后直接在内存地址中执行其注册函数(DllRegisterServer、UnDllregisterServer)。其编程方法是:
1、使用Windows API函数LoadLibrary载入ActiveX控件;
2、使用GetProcAddress函数获取ActiveX控件中注册函数DllRegisterServer(注销函数为DllUnregisterserver)指针;
3、使用CallWindowProc函数执行已载入内存的ActiveX控件注册函数(DllRegisterServer、UnDllregisterServer)。
上面所述的ActiveX控件注册方法各有特点。经实际使用,效果良好。您可根据实际情况灵活选用。
下一篇:托盘编程 >>
相关文章:
- · Internet上的图像检索技术
- · 接口设计对软件性能的影响
- · 优化软件性能的方法
- · Linux 下 C++程序的异常处理技巧
- · Linux上的C/C++编译器gcc/egcs详解
- · Linux中BSD套接口开发的基础介绍
- · Kylix之经典十大难题
- · 050913:awk中几个内置变量的man说明,感觉英文记得牢点。
- · bash Shell中函數的應用小結
- · 正则表达式模式匹配
- · 计算网络广播地址的shell
- · Shell基本工作原理
- · 了解系统应用情况 彻底监控Windows运行
- · Windows的文件查找功能应用小技巧
- · USB设备还可以这样来安装进Windows
- · 巧用WinRAR为Win9x登陆系统加密
- · 重装系统如何恢复Win98备份文件
- · 在Win98中关闭光盘自动播放功能
- · 了解windows中Alt键的十大用法
- · 极度瘦身:40M的Windows 98
- · 让98也可拥有XP的开机声音
- · Windows 98全自动克隆安装盘
- · 松打造个性Win98启动画面
- · 用快捷键全面掌控你的Windo…
- · 利用Win98自带的Winipcfg命…
- · 让“状态栏”永驻“资源管理…
- · 在Win98中关闭光盘自动播放…
- · 巧用WinRAR为Win9x登陆系统…
- · 优化Windows启动提升性能
- · Win XP教程-XP高级技巧-添加无线Internet摄像机
- · Win XP教程-XP高级技巧-自动重启问题
- · Win XP教程-XP高级技巧-几个著名的Windows伪优化技巧
- · Win XP教程-XP高级技巧-揪出系统中胡作非为的DLL黑手
- · Win XP教程-XP高级技巧-常见系统文件的丢失与损坏
- · Win XP教程-XP高级技巧-传输流的下一件好事
- · Win XP教程-XP高级技巧-厨房中的Windows XP
- · Win XP教程-XP高级技巧-数字照片难题
- · Win XP教程-XP高级技巧-构建一台家用服务器
