Тема: Полный путь к выполняемому *.exe файлу AutoCAD

Всем добрый день!
Поздравляю всех участников форума с наступающими Майскими праздниками!
Всем здоровья, удачи, успехов и благополучия!!!

А теперь к делу. Проект на .NET.
У пользователей на рабочих станциях стоят разные версии AutoCAD, стоят на разных дисках и в разных каталогах. У многих на одном РС по несколько версий, начиная с AutoCAD 2002. В принципе допустимая ситуация.

Подскажите, как красиво определить полный путь к выполняемому файлу acad.exe, из которого в данный момент запущена команда.

Заранее благодарю за помощь

С уважением,
Андрей

Re: Полный путь к выполняемому *.exe файлу AutoCAD

Посмотрите темку.

http://hashcode.ru/questions/2938/windo … 81%D1%83-c

(изменено: Hwd, 1 мая 2013г. 13:17:58)

Re: Полный путь к выполняемому *.exe файлу AutoCAD

@Павел Кикин, Процессов "acad" может быть запущено несколько сразу. Кроме того, в AutoCAD .NET API существует "родной" способ получения указанной автором информации.

@Андрей Дудинский, если хочешь узнать из плагина, загруженного в AutoCAD, то используй такой вариант:

using Db = Autodesk.AutoCAD.DatabaseServices;
...
String rk;
// Надеюсь, что как работать с директивами препроцессора ты в курсе, поэтому код не поясняю...
#if acad_newer_than_2012
 rk = Db.HostApplicationServices.Current.UserRegistryProductRootKey;
#else
 rk = Db.HostApplicationServices.Current.RegistryProductRootKey;
#endif
String location = Registry.LocalMachine.OpenSubKey(rk, false).GetValue("AcadLocation").ToString();
String exeFile = Path.Combine(location, "acad.exe");
...

Re: Полный путь к выполняемому *.exe файлу AutoCAD

почему бы не использовать это?

AppDomain.CurrentDomain.BaseDirectory

Re: Полный путь к выполняемому *.exe файлу AutoCAD

Artem A пишет:

почему бы не использовать это?

AppDomain.CurrentDomain.BaseDirectory

Я так понимаю, что указанный способ работает потому, что .NET библиотеки, используемые в AutoCAD, находятся в том же каталоге, где лежит и acad.exe. Если Autodesk в очередной версии решит вдруг вынести их в отдельный подкаталог, то указанный способ скорее всего станет давать неверный результат. Поэтому, на мой взгляд, лучше перестраховаться и читать "по старинке", из реестра, как я показал выше.

имхо.

Re: Полный путь к выполняемому *.exe файлу AutoCAD

Всем, кто принял участие в обсуждение данного вопроса Большое спасибо!
Меня больше всего беспокоил случай, когда "acad.exe" у пользователя запущено несколько сразу.
Поэтому на данный момент я склоняюсь к предложению Artem A и Андрея.
Павел, а Ваше предложение на сто процентов закрывает проблему одного моего проекта, который предстоит модернизировать. Как видно Май будет удачным...

Всем еще раз большое спасибо! Всех с праздниками, хорошей погоды и праздничного настроения...

С уважением,
Андрей

Re: Полный путь к выполняемому *.exe файлу AutoCAD

Варианты:
1. System.Windows.Forms.Application.ExecutablePath;
2. Environment.GetCommandLineArgs()[0];
3. System.Reflection.Assembly.GetEntryAssembly().Location;
4. System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName);

Re: Полный путь к выполняемому *.exe файлу AutoCAD

Александр, здравствуйте!
Большое спасибо за Ваши варианты...
С майскими праздниками Вас...

С уважением,
Андрей