【发布时间】:2014-01-09 21:56:34
【问题描述】:
我正在开发的程序将在 AutoCAD 2013 和 2002 上使用。所以,我正在做的是检查用户是否有 2013 以及是否不存在尝试 2002。代码链接时出现问题AcadApplication 对象指向 2002 的打开实例。
代码:
_progID_2002 = "AutoCAD.Application.15";
_progID_2013 = "AutoCAD.Application.19";
try
{
Type acType = Type.GetTypeFromProgID(_progID_2002);
_acadApp = (AcadApplication)Activator.CreateInstance(acType, true);
}
catch
{
// Try other version, or exit
}
所以当我使用_progID_2013 时,这非常有效。它会打开 AutoCAD 2013 并链接 _acadApp。当我使用 _progID_2002 尝试它时,它会打开 AutoCAD 2002,但是当我将 _acadApp 设置为打开的实例时,它会引发异常:
InvalidCastException
Unable to cast COM object of the type 'System._ComObject' to interface type
'AutoCAD.AcadApplication'. This operation failed because the QueryInterface
call on the COM component for the interface with IID '{070AA05D-DFC1-4E64-
8379-432269B48B07}' failed due to the following error: No such interface
supported (Exception from HRESULT:0x80004002 (E_NOINTERFACE)).
我尝试同时使用 2000 和 2013 互操作库,但没有成功。
【问题讨论】: