流程沟通

时间:2013-12-29 16:27:08

标签: c#

我正在尝试创建一个输出文件,用作其他进程的输入。我有一个例子,但在尝试编写时遇到错误。看看您是否可以帮助纠正此问题或建议将信息传递给外部流程的方法:

using System;
using System.Diagnostics;

namespace ExternalProcessComm
{
  class Program
  {
    static void Main(string[] args)
    {
        System.Diagnostics.Process p = new System.Diagnostics.Process();

        p.StartInfo.FileName = "notepad.exe";
        p.StartInfo.Arguments = @"C:\Users\Admin\Documents\test_out.txt";
        p.StartInfo.UseShellExecute = false;
        p.StartInfo.RedirectStandardOutput = true;

        //start the exe
        p.Start();

        //write something 
        p.StandardInput.Write("Test Text"); // Getting error here

        //read the output 
        string output = p.StandardOutput.ReadToEnd();
        Console.WriteLine(output);
    }
  }
}

2 个答案:

答案 0 :(得分:1)

您需要设置p.StartInfo.RedirectStandardInput = true; - 您已经为StandardOutput设置了,但您需要同时执行这两项操作。

至于您正在启动的实际程序,您将要使用标准输入和输出的程序进行测试 - 记事本不会。

答案 1 :(得分:0)

您没有重定向标准输入(这是您可能正确的错误消息?

添加

p.StartInfo.RedirectStandardInput = true;

关于与记事本交互的问题:这不会像你期望的那样有效。