yes, see http://www.csharphelp.com/archives/archive210.html

解决方案 »

  1.   

    using System;
    using System.Diagnostics;
    using System.IO;
    public class StandardInputTest
    {
    public static void Main()
    {
    Process p2=new Process();
    p2.StartInfo.FileName="test1.exe";
    p2.StartInfo.UseShellExecute=false;
    p2.StartInfo.RedirectStandardInput=true;
    p2.StartInfo.RedirectStandardOutput=true;
    p2.Start();
    StreamWriter input = p2.StandardInput;
    input.WriteLine("How Are You.");
    input.Close();
    StreamReader output = p2.StandardOutput;
    Console.WriteLine(output.ReadToEnd());
    }
    }//付:test1.cs
    //请编译 csc /out:test1.exe test1.cs
    using System;
    class testcs
    {
    public static void Main ()
    {
    String str = Console.ReadLine();
    Console.WriteLine(str);
    }
    }
      

  2.   

    StreamWriter input = p2.StandardInput;
    StreamReader sr = new StreamReader("yourfile");
    String str;
    while ((str = sr.ReadLine()) != null) {
    input.WriteLine(str);
    }
    input.Close();
    sr.Close();
      

  3.   

    楼上可否看下我这段程序!!!!!Process execute = new Process();
    StreamWriter input = execute.StandardInput;
    StreamWriter fileout = File.CreateText(@"d:\csworking\out.txt");
    StreamReader output = execute.StandardOutput;
    StreamReader filein = File.OpenText(@"d:\csworking\in.txt");

    execute.StartInfo.FileName = @"d:\csworking\t";
    execute.StartInfo.CreateNoWindow = true;
    execute.StartInfo.RedirectStandardInput = true;
    execute.StartInfo.RedirectStandardOutput = true;
    execute.StartInfo.UseShellExecute = false;


    string str;
    while((str = filein.ReadLine()) != null)
    {
         input.WriteLine(str);
    }
    execute.Start();
    execute.WaitForExit();
    while((str = output.ReadLine())!=null)
    {
    fileout.WriteLine(str);
    }
    filein.Close();
    fileout.Close();
    input.Close();
    output.Close();
    }
      

  4.   

    using System;
    using System.Diagnostics;
    using System.IO;
    using System.Text;class test
    {
    public static void Main ()
    {
    Process execute = new Process();
    execute.StartInfo.FileName = @"test1.exe";
    execute.StartInfo.CreateNoWindow = true;
    execute.StartInfo.UseShellExecute = false;
    execute.StartInfo.RedirectStandardInput = true;
    execute.StartInfo.RedirectStandardOutput = true; execute.Start();
    StreamWriter input = execute.StandardInput;
    StreamWriter fileout = File.CreateText(@"out.txt");
    StreamReader output = execute.StandardOutput;
    StreamReader filein = File.OpenText(@"in.txt");
    string str;
    while((str = filein.ReadLine()) != null)
    {
     input.WriteLine(str);
    }
    filein.Close();
    input.Close();
    execute.WaitForExit();
    while((str = output.ReadLine())!=null)
    {
    fileout.WriteLine(str);
    }
    fileout.Close();
    output.Close();
    }
    }如果要支持中文就用:
    StreamWriter input = execute.StandardInput;
    StreamWriter fileout = new StreamWriter(@"out.txt", false, Encoding.GetEncoding("gb2312"));
    StreamReader output = execute.StandardOutput;
    StreamReader filein = new StreamReader(@"test.txt", Encoding.GetEncoding("gb2312"));
      

  5.   

    1.取StandardOutput这些属性最好在进程启动以后;
    2.对这些属性的操作就更要在它启动之后了;
    3.StreamWriter如果不刷新,数据都在缓冲区,并没有真正写入流内,当调用Flush时才会写入流。而Close方法同时调用了Flush。但是你的程序调用Close方法错了,必须先结束输入流,才可能产生输出流,这时才读输出流。而你的是先读输出流,在结束输入流,所以就没有数据。