process.start()调用cmd.exe文件

作业中偷懒了,模拟windows的命令提示符,用户输入一个dos命令,比如“help”、“ipconfig”等,程序输出cmd.exe执行输出的字符信息

大部分程序来源于网上的,总结了先归纳分享orz……虽然是很基本的


当然是c#编写的,这次作业不仅仅是做了个作业(废话……),而是看到了c#在整合程序模块上的强大之处:几个人天南地北的写了各自的代码,最后两句话就整合到了一起:new一个窗体、窗体.show()……


下面的程序需要添加命名空间的引用:
using  System.Diagnostics;
using System.IO;


下面的方法中,大体思想,唔,主要是process.start()方法,不懂的自己请教百度大神或谷歌大叔

由process.start()调用cmd.exe,再接收用户输入的一个dos命令,保存到一个string变量里,然后截取process的输出流,在用户制定的文本框中输出该字符流


组件使用情况为:一个testbox,名字为textInput,一个textbox,名字也是textbox,多行显示输出信息,一个按钮,button,按钮单击方法如下:


private void button_Click(object sender, EventArgs e)

{

            string str = textInput.Text.ToString(); // 输入的命令行,保存在 str中

            ProcessStartInfo start = new ProcessStartInfo ("cmd.exe" );

            start.FileName = "cmd.exe" ;   // 设定程序名

            start.Arguments = " /c " + str;

            start.CreateNoWindow = true ;  // 不显示dos 窗口

            start.UseShellExecute = false ;    // 是否指定操作系统外壳进程启动程序,没有这行,调试时编译器会通知你加上的...orz

            start.RedirectStandardInput = true ;

            start.RedirectStandardOutput = true ;  // 重新定向标准输入、输出流

 

            Process p = Process .Start(start);


            StreamReader reader = p.StandardOutput;  // 截取输出流


             string line = reader.ReadLine();     // 每次读一行

            while (!reader.EndOfStream)  // 不为空则读取

            {

                textBox.AppendText(line + Environment .NewLine);  // Environment .NewLine 换行

                line = reader.ReadLine();

            }


            p.WaitForExit();    // 等待程序执行完退出进程

            p.Close();      // 关闭进程

            reader.Close(); // 关闭流


}


 

你可能感兴趣的:(String,dos,C#,button,textbox,作业)