怎样在程序中获得ocx控件的所有属性,方法和事件

怎样在程序中获得ocx控件的所有属性,方法和事件,第1张

使用 #import "c:\winnt\system32\tlbinf32dll" 导入TypeLib information库,该库提供了类来获取一个 active dll中的所有coclass,interface, function, paraments等信息。如果不足道该如何

使用,可以先在VB中做实验。

1 在Project的引用中增加对 TypeLib ,information 库的引用

2 下面是一段示例代码:显示所有的coclass

Dim TLInfo As TypeLibInfo

Set TLInfo = TLITypeLibInfoFromFile( "c:\temp\Yourdll")

With TLInfoCoClasses

For i = 1 To Count

msgbox Item(i)name

Next

End With

'显示第一个CoClass的所有接口

With TLInfoCoClassesItem(1)interfaces

For i = 1 To Count

msgbox Item(i)name

Next

End With

'显示第一个CoClass的第一个接口的的所有函数

With TLInfoCoClassesItem(1)interfaces(1)members

For i = 1 To Count

msgbox Item(i)name

Next

End With

这是文件内容错误导致的,可以重新下载

1、打开网页,在搜索框内输入需要搜索的PersonalBankMainocx文件

2、将PersonalBankMainocx文件复制到DLL目录“C:\Windows\System32”下。

3、点击开始然后再运行,输入:regsvr32 PersonalBankMainocx,点击确定。

4、通过上述的步骤之后会d出一个窗口,在窗口中选择确定,就可以完成文件装载了

ActiveX控件的优点:用ActiveX控件可快速实现小型的组件重用、代码共享,从而提高编程效率,降低开发成本。

但是ActiveX控件对于最终用户并不能直接使用,因为ActiveX控件必须先在Windows中注册。

本文总结注册ActiveX控件的六种办法,它们有各有千秋,应用范围各异。

一、Regsvr32exe注册

这种方法是比较常用的。

Regsvr32exe位于Windows目录的system子目录下。点击Windows的“开始→运行”菜单,在对话框中输入以下命令:(这里以netshareocx控件为例)

regsvr32 netshareocx 注册netshareocx控件

regsvr32 /u netshareocx 解除netshareocx控件的注册

如果netshareocx文件不在system目录时,还必须在文件名前加上完整的路径。

二、除了regsvr32应用程序之外,Microsoft在它的Web站点上还提供了一个称为regcleanexe的程序,可以检查注册表并去掉丢失的组件在注册表中的条目。regcleanexe除了可以删除“悬挂”的条目,它还提供一个“undo”文件帮助恢复错误的删除。

三、VFP环境注册

打开VFP,选择“工具→选项”菜单,点击“控件”页,选中“ActiveX控件”单选按钮,在列表框里显示所有已经注册的ActiveX控件,这时,点击右边的“添加”按钮,选择需要注册的ActiveX控件文件,“确定”后完成注册。也可以在表单设计器的表单控件工具栏里拖动“OLE”按钮到表单,在d出的选择框里选中“插入控件”单选钮,同样点击右边的“添加控件”按钮,来完成新控件的注册。

三、安装程序注册

大型应用软件一般都有一个安装程序,在安装程序中解决ActiveX控件的注册是较为理想的一种方案。

在用户执行安装程序时,这些ActiveX控件将自动在用户机器上安装并注册。

VFP70光盘所带的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( "netshareocx", T) //注册netshareocx控件

= MyRegsvr( "netshareocx", F) //解除netshareocx控件的注册

五、注册函数注册

上面提到运行regsvr32exe应用程序将d出注册是否成功的对话框,注意看内容“DllRegisterServer in netshareocx 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( "netshareocx", T) //注册,返回0表示成功

= DllRegister( "netshareocx", F) //注销,返回0表示成功

Clear Dlls

试试,是不是没有了d出框的烦恼!

注意:该方法没有对ActiveX控件文件的验证,假如该控件没有有效的DllRegisterServer功能(即不具有自注册功能),也就找不到以上的两个API函数,照样会有错误信息d出。

六、API函数注册

此方法的设计思路是:先将ActiveX控件载入内存,然后验证其有效性,最后直接在内存地址中执行其注册函数(DllRegisterServer、UnDllregisterServer)。其编程方法是:

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

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

3、使用CallWindowProc函数执行已载入内存的ActiveX控件注册函数(DllRegisterServer、UnDllregisterServer)。

上面所述的ActiveX控件注册方法各有特点。经实际使用,效果良好。各位可以根据实际情况灵活选用。

以上就是关于怎样在程序中获得ocx控件的所有属性,方法和事件全部的内容,包括:怎样在程序中获得ocx控件的所有属性,方法和事件、装载PersonalBankMain.ocx文件失败、如何注册ActiveX控件等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9570718.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-29
下一篇 2023-04-29

发表评论

登录后才能评论

评论列表(0条)

保存