为什么已经注册了的ActiveX控件,通过代码方式建立此对象时,却提示“类别未授权使用”。

已注册mswinsck.ocx文件,为何还提示类别未注册?
在开发的机器上运行正常。把程序拷到别的机器上,总是报错,提示类别未注册。我肯定是winsock控件的问题,可是ocx文件也拷过去了,也用regsvr32.exe注册了,也提示注册成功了。
可是为何还报错呀?别的控件未遇到过此问题。
---------------------------------------------------------------

某些ActiveX控件存在此种问题,以下以mswinsck.ocx为例:

创建此对象的代码:

LOCAL owinsock &&winsock对象
owinsock = CREATEOBJECT("mswinsock.winsock")
IF TYPE("owinsock") # "O"
MESSAGEBOX("WINSOCK对象初始化错误,请注册WINSOCK对象!",16,"系统提示")
RETURN
ENDIF

IF owinsock.localip == "127.0.0.1" OR EMPTY(owinsock.localip)
RELEASE owinsock
IF MESSAGEBOX("网络连接错误,该机器没有连接网线,是否继续?" + CHR(13) + "正常情况下您应该选择“否”来退出,然后联系相关技术人员!",4+16+256,"提示") <> 6
RETURN
ENDIF
ENDIF

以上代码没有问题,
在开发的机器上(安装了VFP)运行正常,而在没安装VFP的机子运行却提示“类别未授权使用”

因为开发的机子安装VFP时,取得了OCX授权,而在未安装VFP的机器上没有取得OCX授权

使用纯代码建立winsock对象,对于开发的那台机器没问题,别的机器都用不了。

所以这不是ocx的注册问题,而是ocx的授权问题。

解决方法:

对于mswinsck.ocx来说,如果想不报错,请不要用纯代码来建立winsock对象,改用可视化,即把这个ocx拖到表单上。

因为可视化建立的winsock连编成EXE时会自动带上授权密钥.

Published At
Categories with 数据库类
Tagged with
comments powered by Disqus