VB6程序与AutoCAD交互,是不是能够再创造,或绑定到ACAD对象

问题描述:

堆栈,VB6程序与AutoCAD交互,是不是能够再创造,或绑定到ACAD对象

要开始,该网站是太棒了,你帮助我度过了很多过去的问题;谢谢。

展望未来,该方案已经存在,并且在使用中,因为2000年的AutoCAD软件的最新版本兼容高达ACAD 2017年

我有一个小团队中工作,突然冒出来,我的电脑正在与VB6/AutoCAD组合拼搏;其他开发商仍然没有问题的工作......

后期绑定用于获取或创建的对象;取决于Acad是否已经在运行......例如,

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") 

我相信我自己和球队之间的区别是,我最近有经过一番“访问注册表时出错”问题浮出水面重新安装VB6(后立即Windows更新......奇怪的),这是很大的区别。每个人都已经从7迁移到10 VB6安装我的第一个10台机器直接安装在Windows

我们大家。最初使用SP6和VB6,但这个问题已经引起了我的注意。显然,他们仍在更新服务包。所以,电脑最近已经更新为SP6D。我也尝试安装累积服务包。

我试图从运7,运8更改兼容性设置,XP的(所有的)......我不知道。

我以管理员身份运行

这是一个64位的机器。

已经安装了原始的VB6 MSDN库...出于某种原因,SP6将无法正确安装,直到它...因此,实际的VB6安装被挂起。这似乎并不影响很大,但必须在后台做什么(或不做)

任何帮助将不胜感激......我们也希望。

*******新信息******* 显然,添加'.20'只适用于其中一个exes,另一个需要和附加版本号(例如“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的类ID(CLSID)您调用存储在注册表...无论是HKEY_CLASSES_ROOT配置单元下和HKEY_LOCAL_MACHINE配置单元下(类) - (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。