【已解决】关于一个OCX文件的调用,有人说是建立Object
本帖最后由 chenronting 于 2013-8-2 10:49 编辑大家好,目前,我手上有一个OCX文件, 声明了全局函数,可以外部调用,下面是其中的两个函数:
1.初始化串口函数
Public Function FunctionInitComm(ByVal port As Byte) As Boolean
功能:打开Port串口
入口:Port端口号 1~16
出口:true 成功
false 失败
2.关闭串口函数
Public Function FunctionCloseComm()
功能:关闭打开的串口
下面是我自己按论坛里的例子写出来的,运行时判断出没有建立Object
Dim $Ocx=ObjCreate("Reader.ocx")
If Not IsObj($Ocx) Then
MsgBox(0,0,"没有对象");未注册的容错处理。测试时已确定注册。
EndIf
$a=$Ocx.FunctionInitComm(1)
$Ocx.functionclosecomm()
不好意思,现在附上 Reader.ocx
下载后请修改,去掉Au3后缀
请大家帮帮我,感谢之至!!
下面是坛友阿婆教会我的方法,在这里分享于各位需要的看官。
也感谢阿婆的帮助,为之头疼时,他的出现与帮助,无异于一道天光。嘿嘿~入正题:
首先你要注册控件(复制到System32再regsvr32.exe)
打开注册表,搜索你注册的控件名,在 HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\ 下面
如,我这个文件注册后,内里内容如下
Windows Registry Editor Version 5.00
@="MyCpuReaderOcx.CpuCardReader"
@=""
@="C:\\windows\\system32\\cpureader.ocx"
"ThreadingModel"="Apartment"
@="0"
@="131473"
@="MyCpuReaderOcx.CpuCardReader"
@="C:\\windows\\system32\\cpureader.ocx, 30000"
@="{B51FFB27-E56B-4577-98E3-78F5BE6A8DA7}"
@="1.0"
可以一眼看到第三行与第十九行中出现了熟悉的格式 MyCpuReaderOcx.CpuCardReader
这个就是你使用 Object 注册的名称,其中已第十九行的名称为准
如果你不知道控件内里的使用方法,Autoit 也有给你准备了工具,只是不多的人发现了(我开始也没发现,感谢阿婆传授神功~~)
打开 Autoit 工具箱 ,右键之,点开菜单 程序扩展工具--OLE程序查看器
出来一个软件,点击 File -- View TypeLib,再选择你要查看的控件即可
注意,以上方法适用但不限于 OCX (这里我只测试了OCX,其他如DLL 等的使用方法会有所异差) 要先用service32注册 回复 2# ebhb
谢谢你, 问题我已经解决了,等下把方法共享之。 今天做了个相似的测试,总是提示控件未注册。
最后发现是版本的问题,即32位OCX必须用32位程序调用。
在文件头部加:#PRE_UseX64=n 后问题顺利解决。
其它编程工具亦存在此类问题,使用时注意。
页:
[1]