2013-03-30 5 views
3

У меня есть решение в VS2010. В рамках решения у меня есть основное приложение WPF со всем пользовательским интерфейсом, несколькими библиотеками и консольным приложением, которое я хочу запустить, когда я нажимаю кнопку в своем приложении WPF. Моя структура решения похожа на это:Запуск приложения консоли из другого проекта

- Solution 
    - WPF App [this is my startup project] 
    - Library 
    - Another library 
    - Console application 

Теперь я сделал некоторые охоты вокруг, и я нашел людей, которые ищут, как ссылаться на код и классы, а также решение этого существа, которое я нахожу путь исполняемого файла и запустить его как новый процесс. Однако для этого требуется знание абсолютного пути или даже относительного пути, и мне было интересно, можно ли только запустить приложение, даже если оно находится в том же решении?

ответ

5

Да, это правда. Вы должны знать путь к исполняемому файлу, будь то абсолютный или относительный. Но это не разбивка. Почему бы вам не просто разместить свои WPF exe ​​и Console exe ​​в той же директории или в подкаталоге, например в bin\myconsole.exe? При создании нового Process просто передайте имя Console exe ​​на номер Process.Start(), и Windows найдет ваш исполняемый файл.

using System; 
using System.Diagnostics; 
using System.ComponentModel; 

namespace MyProcessSample 
{ 
class MyProcess 
{ 
    // Opens the Internet Explorer application. 
    void OpenApplication(string myFavoritesPath) 
    { 
     // Start Internet Explorer. Defaults to the home page. 
     Process.Start("IExplore.exe"); 

     // Display the contents of the favorites folder in the browser. 
     Process.Start(myFavoritesPath); 
    } 

    // Opens urls and .html documents using Internet Explorer. 
    void OpenWithArguments() 
    { 
     // url's are not considered documents. They can only be opened 
     // by passing them as arguments. 
     Process.Start("IExplore.exe", "www.northwindtraders.com"); 

     // Start a Web page using a browser associated with .html and .asp files. 
     Process.Start("IExplore.exe", "C:\\myPath\\myFile.htm"); 
     Process.Start("IExplore.exe", "C:\\myPath\\myFile.asp"); 
    } 

    // Uses the ProcessStartInfo class to start new processes, 
    // both in a minimized mode. 
    void OpenWithStartInfo() 
    { 
     ProcessStartInfo startInfo = new ProcessStartInfo("IExplore.exe"); 
     startInfo.WindowStyle = ProcessWindowStyle.Minimized; 

     Process.Start(startInfo); 

     startInfo.Arguments = "www.northwindtraders.com"; 

     Process.Start(startInfo); 
    } 

    static void Main() 
    { 
     // Get the path that stores favorite links. 
     string myFavoritesPath = 
      Environment.GetFolderPath(Environment.SpecialFolder.Favorites); 

     MyProcess myProcess = new MyProcess(); 

     myProcess.OpenApplication(myFavoritesPath); 
     myProcess.OpenWithArguments(); 
     myProcess.OpenWithStartInfo(); 
    } 
} 
} 

Посмотрите here.

+0

Приветствия, я думаю, я последую этому. :) –

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

  • Нет связанных вопросов^_^