从Windows窗体向运行控制台应用程序传递多个参数

时间:2018-09-16 10:07:05

标签: c# .net process ipc

我有控制台应用程序,将其命名为 X.exe 。它与两个参数一起工作,比如说'a'和'a.tmp',其中 a 是我的输入文件名 a.tmp 是输出文件名。我通常在控制台上运行以下应用程序: X a.tmp 但是首先我必须出现在输入文件'a'的位置,否则,如果我尝试给出其绝对路径,应用程序将无法工作。 我已经创建了Windows窗体来运行这些控制台应用程序,但是正如我之前所说,必须在文件位置启动该应用程序。 我尝试使用过程对象,但应用程序无法正常工作。 我创建了两个过程:

  1. 转到文件位置
  2. 在文件上执行应用程序     位置

Question: can I excute these multiple commands in one go and avoid using IPC?

1 个答案:

答案 0 :(得分:0)

您可以使用ProcessStartInfo.WorkingDirectory

例如来自MS Docs - ProcessStartInfo Class

  

WorkingDirectoryUseShellExecute时,true属性的行为与UseShellExecutefalse时的行为不同。当UseShellExecutetrue时,WorkingDirectory属性指定可执行文件的位置。如果WorkingDirectory是一个空字符串,则当前目录将包含可执行文件。

     

注意-当UseShellExecutetrue时,启动可执行文件的应用程序的工作目录也是可执行文件的工作目录。

     

UseShellExecutefalse时,WorkingDirectory属性不用于查找可执行文件。相反,它的值适用于已启动的流程,并且仅在新流程的上下文中具有意义。

例如

    public static void Main()
    {
        Process myProcess = new Process();

        try
        {                
            myProcess.StartInfo.UseShellExecute = true;

            // You can start any process, HelloWorld is a do-nothing example.
            myProcess.StartInfo.FileName = "X.exe"; /
            myProcess.WorkingDirectory = "C:\SomeDirectory That contains A and A.tmp"
            myProcess.Start();
        }
        catch (Exception e)
        {
            Console.WriteLine(e.Message);
        }
    }