Доброго времени суток.
- AutoCAD 2009 SP3 x64 Enu
- AutoCAD 2014 SP1 x64 Enu
Следующий код успешно работает:
// Получаю объект уже запущеного приложения AutoCAD
AcadApplication app1 = System.Runtime.InteropServices.Marshal.GetActiveObject("AutoCAD.Application") as AcadApplication;
// Создаю новый объект приложения AutoCAD
System.Type type = System.Type.GetTypeFromProgID("AutoCAD.Application");
AcadApplication app2 = System.Activator.CreateInstance(type) as AcadApplication;
Если вместо "AutoCAD.Application" использовать "AutoCAD.Application.17.2", "AutoCAD.Application.19.1", "AutoCAD.Application.17" или "AutoCAD.Application.19", то всё так же работает.
Несколько вопросов:
1. Если у меня одновременно запущено несколько приложений AutoCAD, причём разных версий, то:
1.1. Как в подобных случаях получить их перечень и отличать др. от друга (не хотелось бы процессы перебирать в цикле)?
1.2. Как указать,
для какого именно из запущенных приложений следует получить объект AcadApplication?
2. Если на компьютере установлено сразу несколько версий AutoCAD, то:
2.1. Можно ли при помощи COM получить их перечень? Т,е. хотелось бы получить, к примеру, массив: "AutoCAD.Application.17.2", "AutoCAD.Application.19.1". Это легко можно получить через реестр, но на всякий случай уточняю наличия функции, делающей то же самое...
Спасибо.