`
csstome
  • 浏览: 1468141 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

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,dReadLineonReadLine)
... {
System.Diagnostics.Processp
= 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.StreamReaderreader
= p.StandardOutput; // 截取输出流
string line = reader.ReadLine(); // 每次读取一行
while ( ! reader.EndOfStream)
... {
onReadLine(line);
line
= reader.ReadLine();
}

p.WaitForExit();
}


private void button1_Click( object sender,EventArgse)
... {
excuteCommand(
" ipconfig " , "" , new dReadLine(PrintMessage));
}

private void PrintMessage( string strLine)
... {
this .textBox1.Text += strLine + " " ;
}

}

}
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics