VB6 运行时错误‘429’ ActiveX部件不能创建对象

seawoder 2011-09-27 04:35:59
我在一个自定义类中编写了如下代码
Public Function OpenCom(ByVal ComNo As Long, sSetting As String) As Boolean
Set com = CreateObject("MSCommLib.MSComm")
com.CommPort = ComNo
com.Settings = sSetting
com.PortOpen = True
End Function

执行源代码正常,在写程序的电脑上用生成的可执行程序也可以正常运行。
制作成安装包后复制到其他计算机安装后,会提示如标题所示错误。

经过反复验证,判断安装了VB6开发环境的机器都可以正常运行。
如果没有安装vb6,那使用VB打包工具打出的安装包也无法正常使用。
在网上找了几种办法,如注册dao350.dll,scrrun.dll等均无法解决该问题。
求教,准确的原因及解决办法,是哪个或哪些文件导致了这个问题?如何才能在不装vb6的情况下解决此事?




...全文
4162 13 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
hwfh11 2013-08-02
  • 打赏
  • 举报
回复
挖坟。 我很早就发现这个问题,知道一个很奇怪的解决方法,能解决,但不知道原因。 方法很简单:一般出现这个问题的用户都无权限共享本机的文件,只要给予用户这个权限,并将组件注册一次就OK了。 希望有大神能解说一二~~
seawoder 2012-07-31
  • 打赏
  • 举报
回复
结贴了,感觉没有根本的弄清楚,但也知道了些新的东西,所以分分给大家吧。
seawoder 2011-10-18
  • 打赏
  • 举报
回复
最终发现我写程序的电脑操作系统是xp SP3,不能正常运行的试用电脑是XP SP2。
如果我在同样是sp2的电脑上编译,则在其他SP2的机器上就可以运行。
虽然还没有找到具体是哪个文件,但我想可以确认是因为某个系统组件不同造成的。
无·法 2011-09-28
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 worldy 的回复:]

菜单工程-属性-生成 里的“删除有关未使用的activex信息”选项不能打钩
[/Quote]对于createobject创建的无效。
worldy 2011-09-28
  • 打赏
  • 举报
回复
再者,LZ为什么不使用放一个comm控件到窗口上,而要使用createobject创建?
worldy 2011-09-28
  • 打赏
  • 举报
回复
菜单工程-属性-生成 里的“删除有关未使用的activex信息”选项不能打钩
无·法 2011-09-28
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 daziran204 的回复:]

打包时能把 这个打进去吗?能的话就一起打了 mscomm32.ocx 和mscommlib.dll
[/Quote]可以,由于你是通过createobject静态调用的所以vb打包系统不知道。如果是通过引用或者添加部件的话它就自动加上了。
另外建议不要用vb自带的打包工具,推荐innosetup或installshield。
孤独剑_LPZ 2011-09-28
  • 打赏
  • 举报
回复
包文件未打全,建议重新打包,换个工具打包吧
daziran204 2011-09-28
  • 打赏
  • 举报
回复
打包时能把 这个打进去吗?能的话就一起打了 mscomm32.ocx 和mscommlib.dll
chinaboyzyq 2011-09-28
  • 打赏
  • 举报
回复
其它机子需要mscomm32.ocx控件(要vb6下的,xp自带的不能正常使用),并注册。
seawoder 2011-09-28
  • 打赏
  • 举报
回复
sysdew:我比较了一下,两台机器上都有mscomm32.ocx,却都没有mscommlib.dll。
worldy:我是自定义的dll,没有窗体。
Veron_04:API方式用的不熟,我会考虑看看,但是现在的原因我还是想研究一下。除了想解决问题之外,我还想找到最终是哪个文件导致的。
我打包是用的setup2go,需要的文件使用VB打包工具提取的。如果知道是什么原因,用什么工具打包应该都不成问题。我会尝试换个工具看看。

贝隆 2011-09-27
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 sysdzw 的回复:]
复制你的系统目录下的mscomm32.ocx 和mscommlib.dll两个文件到对方机器上并注册下。
[/Quote]
正解!
个人认为,如果你是写类,那么最好不要使用MSComm控件,建议你用API来实现串口通信,那样就不会有楼主所说的问题了。

API实现串口通信参考
无·法 2011-09-27
  • 打赏
  • 举报
回复
复制你的系统目录下的mscomm32.ocx 和mscommlib.dll两个文件到对方机器上并注册下。

7,785

社区成员

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

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