命令行窗口如果满足不了我们的需求(如:要用软件来输入命令,截获命令行的输出,但又要用图形显示),我们可以通过Process类重定向命令行软件的标准输入输出和错误流,实现用桌面控件和命令行交互;
先前有不少人发布自己的C#,Process类和cmd.exe交互代码,但基本是一次读写,或者嵌入原生Dos窗口的页面,不是自己的命令窗口.和原生Dos命令行无异.
期望:使用自己的控件显示输入输出,持续稳定的执行命令行.
以下已一个命令行的cmd.exe为例子:
//////////////////////////////分割线//////////////////////////////////////////////////
1声明Process对象:
Process cmd= new Process();
2初始化线程,并启动,异步读取流:
const int bufferSize = 1000;//演示,一次只读取1000 byte
byte[] data = new byte[bufferSize];
private void FormCmd_Load(object sender, EventArgs e)
{
this.OnReadStdOut += Form1_OnReadStdOut;