与 AutoCAD 交互的 VB6 程序不再能够创建或绑定到 ACAD 对象
VB6 program interacting with AutoCAD, is not longer able to create, or bind to the ACAD object
堆栈,
首先,这个网站太棒了,你过去帮助我解决了很多问题;谢谢。
向前看,此程序自 AutoCAD 2000 以来一直存在并在使用中。该软件的当前版本兼容至 ACAD 2017。
我和一个小团队一起工作,不知为何,我的电脑正在为 VB6/AutoCAD 组合而苦苦挣扎;其他开发人员仍在正常工作...
后期绑定用于获取或创建对象;取决于 Acad 是否已经 运行ning...例如
Set oAutoCad = GetObject(, "Autocad.Application")
If err.Number Then
err.Clear
Set oAutoCad = CreateObject("Autocad.Application")
If err.Number Then
MsgBox UCase$("Unable to launch AutoCAD Session")
End
Else
oAutoCad.Visible = True
End If
End If
有两种不同的可执行文件(使用相同的绑定技术)与 ACAD 一起工作以完成不同的事情。对于它们两者,软件在 CreateObject 和 GetObject 上均失败,出现“运行 时间错误 429 - ActiveX 组件无法创建对象 。但是,将“.20”添加到调用中允许我创建一个对象,但我仍然无法绑定到现有对象。例如...
Call CreateObject("Autocad.Application.20")
我相信我自己和团队之间的区别在于,我最近不得不在出现一些 'Error Accessing Registry' 问题后重新安装 VB6(在 Windows 更新后立即...很奇怪)。这是最大的区别;其他人都安装了 VB6,从 7 迁移到 10。我是第一个直接安装在 windows 10 机器上的人。
我们最初将 SP6 与 VB6 一起使用,尽管这个问题引起了我的注意。显然,他们仍在更新服务包。因此,计算机最近已更新为 SP6D。我也试过安装 Cumulative Service Pack。
我已经尝试更改 Win 7、Win 8、XP(所有这些)的兼容性设置...我不知道。
我已经 运行 成为管理员
这是一台 64 位机器。
原始的 VB6 MSDN 库已经安装...出于某种原因,SP6 无法正确安装,直到它...就此而言,实际的 VB6 安装最后挂断了。它似乎影响不大,但它必须在后台做某事(或不做)
任何帮助将不胜感激...希望如此。
******* 新信息 *******
显然,添加 '.20' 只对其中一个 exe 足够好,另一个需要额外的版本号(例如 "Autocad.Application.20.1")
为了让它更有趣,如果我使用“20.1”启动项目,在创建对象时停止代码,等待 autocad 启动,将其设置为可见,打开我需要连接的绘图使用 ACAD UI,然后允许程序继续,GetObject 不会失败...
????
经过似乎永恒的搜索,我在这里找到了答案...
Late binding run-time error in VB6 when creating an object from a .NET assembly
它的要点是这样的...
当使用 CreateObject/GetObject 时,您调用的 Class ID (CLSID) 存储在注册表中...都在 HKEY_CLASSES_ROOT 配置单元和 HKEY_LOCAL_MACHINE 配置单元下在 (Classes)-(AutoCAD.Application)(.X)
下
似乎 CreateObject 调用使用了 HKEY_CLASSES_ROOT,而 GetObject 可能使用了 HKEY_LOCAL_MACHINE... 我不确定,但这可以解释为什么 CreateObject 调用是工作而不是 GetObject。我的 HKEY_LOCAL_MACHINE 蜂巢以某种方式丢失了 'AutoCAD.Application' 键;可能是由于某种卸载或更新...我不确定。
我所知道的是通过比较配置单元之间的值并将 'CurVer' 值和 'CLSID' 值添加到新创建的 'AutoCAD.Application' 键,程序现在能够在不指定版本的情况下创建和绑定(例如...
CreateObject("AutoCAD.Application")
GetObject(, "AutoCAD.Application")
而不是...
CreateObject("AutoCAD.Application.20.1")
GetObject(, "AutoCAD.Application.20")
甚至更糟
运行-时间错误429:ActiveX组件无法创建对象
再次感谢 Stack。
堆栈,
首先,这个网站太棒了,你过去帮助我解决了很多问题;谢谢。
向前看,此程序自 AutoCAD 2000 以来一直存在并在使用中。该软件的当前版本兼容至 ACAD 2017。
我和一个小团队一起工作,不知为何,我的电脑正在为 VB6/AutoCAD 组合而苦苦挣扎;其他开发人员仍在正常工作...
后期绑定用于获取或创建对象;取决于 Acad 是否已经 运行ning...例如
Set oAutoCad = GetObject(, "Autocad.Application")
If err.Number Then
err.Clear
Set oAutoCad = CreateObject("Autocad.Application")
If err.Number Then
MsgBox UCase$("Unable to launch AutoCAD Session")
End
Else
oAutoCad.Visible = True
End If
End If
有两种不同的可执行文件(使用相同的绑定技术)与 ACAD 一起工作以完成不同的事情。对于它们两者,软件在 CreateObject 和 GetObject 上均失败,出现“运行 时间错误 429 - ActiveX 组件无法创建对象 。但是,将“.20”添加到调用中允许我创建一个对象,但我仍然无法绑定到现有对象。例如...
Call CreateObject("Autocad.Application.20")
我相信我自己和团队之间的区别在于,我最近不得不在出现一些 'Error Accessing Registry' 问题后重新安装 VB6(在 Windows 更新后立即...很奇怪)。这是最大的区别;其他人都安装了 VB6,从 7 迁移到 10。我是第一个直接安装在 windows 10 机器上的人。
我们最初将 SP6 与 VB6 一起使用,尽管这个问题引起了我的注意。显然,他们仍在更新服务包。因此,计算机最近已更新为 SP6D。我也试过安装 Cumulative Service Pack。
我已经尝试更改 Win 7、Win 8、XP(所有这些)的兼容性设置...我不知道。
我已经 运行 成为管理员
这是一台 64 位机器。
原始的 VB6 MSDN 库已经安装...出于某种原因,SP6 无法正确安装,直到它...就此而言,实际的 VB6 安装最后挂断了。它似乎影响不大,但它必须在后台做某事(或不做)
任何帮助将不胜感激...希望如此。
******* 新信息 ******* 显然,添加 '.20' 只对其中一个 exe 足够好,另一个需要额外的版本号(例如 "Autocad.Application.20.1")
为了让它更有趣,如果我使用“20.1”启动项目,在创建对象时停止代码,等待 autocad 启动,将其设置为可见,打开我需要连接的绘图使用 ACAD UI,然后允许程序继续,GetObject 不会失败...
????
经过似乎永恒的搜索,我在这里找到了答案...
Late binding run-time error in VB6 when creating an object from a .NET assembly
它的要点是这样的...
当使用 CreateObject/GetObject 时,您调用的 Class ID (CLSID) 存储在注册表中...都在 HKEY_CLASSES_ROOT 配置单元和 HKEY_LOCAL_MACHINE 配置单元下在 (Classes)-(AutoCAD.Application)(.X)
下似乎 CreateObject 调用使用了 HKEY_CLASSES_ROOT,而 GetObject 可能使用了 HKEY_LOCAL_MACHINE... 我不确定,但这可以解释为什么 CreateObject 调用是工作而不是 GetObject。我的 HKEY_LOCAL_MACHINE 蜂巢以某种方式丢失了 'AutoCAD.Application' 键;可能是由于某种卸载或更新...我不确定。
我所知道的是通过比较配置单元之间的值并将 'CurVer' 值和 'CLSID' 值添加到新创建的 'AutoCAD.Application' 键,程序现在能够在不指定版本的情况下创建和绑定(例如...
CreateObject("AutoCAD.Application")
GetObject(, "AutoCAD.Application")
而不是...
CreateObject("AutoCAD.Application.20.1")
GetObject(, "AutoCAD.Application.20")
甚至更糟
运行-时间错误429:ActiveX组件无法创建对象
再次感谢 Stack。