c#中重定向windows控制台程序的输出信息
这个问题来自论坛提问,答案如下.这只是一个简单的ipconfig命令.如果是复杂的,比如oracle的exp之类的命令,能在调用的时候显示出来,还是相当酷的.
using System; using System.Windows.Forms; namespace WindowsApplication8 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } delegate void dReadLine( string strLine); private void excuteCommand( string strFile, string args, dReadLine onReadLine) { System.Diagnostics.Process p = new System.Diagnostics.Process(); p.StartInfo = new System.Diagnostics.ProcessStartInfo(); p.StartInfo.FileName = strFile; p.StartInfo.Arguments = args; p.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden; p.StartInfo.RedirectStandardOutput = true ; p.StartInfo.UseShellExecute = false ; p.StartInfo.CreateNoWindow = true ; p.Start(); System.IO.StreamReader reader = p.StandardOutput; // 截取输出流 string line = reader.ReadLine(); // 每次读取一行 while ( ! reader.EndOfStream) { onReadLine(line); line = reader.ReadLine(); } p.WaitForExit(); } private void button1_Click( object sender, EventArgs e) { excuteCommand( " ipconfig " , "" , new dReadLine(PrintMessage)); } private void PrintMessage( string strLine) { this .textBox1.Text += strLine + " " ; } } }/* 何问起 hovertree.com */