新编译后的软件在客户环境中出现activex不能创建的问题?

kacy16 2014-03-28 02:42:33
各位,碰到一个问题,现在在维护一个旧系统时,该旧系统是使用VB6.0开发,
在源码的基础上稍微改动了几行对数据库业务操作的SQL语句代码,然后重新编译生成一个新版本的exe文件给客户,
在开发环境中测试时OK的,但是该新版本的exe文件发布到客户处,运行时,报告 "Activex 部件不能创建"的错误,
我使用VB自带的打包工具打包的新版本软件,并与旧版本的打包文件的SETUP.LST进行对比,只有发现以下的一些差别:

其中有些系统的dll或ocx差别较大的有以下:

新版本安装包 旧版本安装包
stdole2.tlb 版本 5.1.2600 2.40.4275.1
asycfilt.dll 版本 5.1.2600 2.40.4275.1
OLEPRO32.DLL 版本 5.1.2600 5.0.4275
OLEAUT32.DLL 版本 5.1.2600 2.40.4275
scrrun.dll 版本 5.7.6002 5.6.0.88
msvcrt.dll 版本 7.0.2600 6.0.9782.0
msado25.tlb 存在 不存在

各位是否有经验这些系统组件版本的差异是否会造成"ActiveX部件不能创建" 的错误。

该错误是出现在软件系统的主界面的显示过程中,是在 Form_Load()函数中,
我在代码中加入了启动日志记录的功能,通过日志分析清楚了解软件连接数据库,查询启动数据时成功的。
主界面上通过拖放控件的形式放置了一个第三方的控件A (ocx文件方式的),在From_Load()函数中,通过
Set mainCtrlB = New MCtrlB 的方式调用了另外一个第三方的控件B (该控件是以 ActiveX exe方式存在的,假设为 MCtrlB.exe。)
mainCtrlB.openpart aaa

代码的流程大致如下:
Private Sub Form_Load()

On Error GoTo ErrHandle
'连接数据库成功
ConnectDB();
LogText("1 连接数据库")

'显示登录界面
LogText("2 登录界面")

'显示主窗体
Me.Show
LogText("3 显示主窗体成功")

'New 控件B
Set mainCtrlB = New MCtrlB
mainCtrlB.openpart aaa
LogText("4 加载控件B成功")

ErrHandle:
'出现错误后,继续执行

MsgBox "主界面错误:错误号" & str(err.Number) & " 来源:" & err.Source & "描述:" & err.Description, vbExclamation, "系统错误提示"
End
End Sub

在客户环境中所观察到的日志记录是,存在 "3 显示主窗体成功" 的记录,但是没有 "4 加载控件B成功" 的记录。
控件B是以一个exe文件的方式存在system32的目录下的。
通过这个日志观察是否可以确定控件A是成功能够加载的,出现错误的是控件B不能创建与运行?
...全文
136 1 打赏 收藏 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
kacy16 2014-04-09
  • 打赏
  • 举报
回复
自己顶一下。 想咨询一下各位, 根据日志记录的信息,有记录下 "3主窗体显示成功", 没有记录下 "4 加载控件B成功", 是否可以确定问题是出在 控件B 上? 该ActiveX exe 形式的控件不对或没有注册? 然后我做了测试,假如卸载掉unregister 控件B, 再运行我的运用软件, 双击该exe文件, 也会报告“Activex 部件不能创建” 的运行错误, 错误号是429。所以是否可以确定是控件B在客户的环境中是已卸载掉了。

1,453

社区成员

发帖
与我相关
我的任务
社区描述
VB 控件
社区管理员
  • 控件
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧