4

我在VS2010中有一个解决方案。在该解决方案下,我有我的主 WPF 应用程序,其中包含所有用户界面、几个库和一个控制台应用程序,当我单击 WPF 应用程序中的按钮时,我想运行这些应用程序。我的解决方案结构类似于:

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

现在我已经进行了一些搜索,我发现人们正在寻找如何引用代码和类,以及解决这个问题的方法是我找到可执行文件的路径,并将其作为新进程运行。但是,这需要知道绝对路径,甚至是相对路径,我想知道这是否是我可以启动应用程序的唯一方法,即使它在同一个解决方案中?

4

1 回答 1

6

是的,这是真的。您必须知道可执行文件的路径,无论是绝对路径还是相对路径。但这不是故障。你为什么不把你的WPFexe 和Consoleexe 放在同一个目录或像 in 这样的子目录中bin\myconsole.exe?创建新的Process时,只需将Consoleexe 的名称传递给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();
    }
}
}

这里

于 2013-03-30T06:45:27.223 回答