2013-12-07 2 views
0

У меня есть следующий код для запуска AutoCAD программного обеспечения:Возможно ли запустить программную программу (например, autocad) с помощью C# без точного пути к файлу?

string path = @"C:\Program Files\Autodesk\AutoCAD 2012 - English\acad.exe"; 
System.Diagnostics.Process p = new System.Diagnostics.Process(); 
p.StartInfo.FileName = path; 
p.Start(); 

Но с этим кодом мне нужен точный путь файла acad.exe

То, что я хотел бы быть в состоянии сделать, это нажать на кнопку и мой код найдет AutoCAD и запустится. Но если он не найден, покажите сообщение.

ответ

0

Я думаю, вам нужно что-то вроде ниже;

using System; 
using System.IO; 

namespace FileLocator 
{ 
class Program 
{ 
    static void Main(string[] args) 
    { 
    string filename = "wmplayer.exe";// Only for example.Change to your exe's name. 
    string searchFolder = Environment.GetFolderPath(Environment.SpecialFolder.CommonProgramFilesX86).Replace("Common Files", "");// ProgramFiles (x86) folder 
    foreach (string directory in Directory.GetDirectories(searchFolder))// Iterate through each folder in PFx86. 
    { 
    foreach (string directoryfilename in Directory.GetFiles(directory, "*.exe"))// Get all files with .exe extension. 
    { 
    if (Path.GetFileName(directoryfilename) == filename)//If Current filename==wmplayer.exe 
    { 
     Console.WriteLine("Found {0} in {1}", filename, directory); 
     Console.WriteLine("Complete Path => {0}", directoryfilename); 
     Console.ReadLine(); 
    } 
    } 
    } 
} 
} 
} 

Этот метод перебирает каждую папку в пункт назначения сейчас его PFx86, чтобы выяснить, что мы need.Be предупреждала этот метод может бросить большое количество исключений безопасности.

1

Класс AutoCAD.Application зарегистрирован и локализован по пути уже. Вы можете извлечь путь из реестра и использовать его для запуска процесса, если хотите. Кроме того, вы можете использовать активатор для создания одного из ProgId, что имеет смысл, если вы планируете вообще взаимодействовать с AutoCAD.

Activator.CreateInstance(Type.GetTypeFromProgID("AutoCAD.Application")); 

Загляните в библиотеки взаимодействия AutoCAD, как работать с этим.

+0

ОП спрашивает, как определить путь установленного приложения autocad 'acad.exe' на ПК. –

+0

Который, если вы действительно прочитали все мое сообщение, которое вы видели, я объяснял, было в реестре и, возможно, превосходен, чем просто поиск через программные файлы. –

Смежные вопросы