C#在单独进程中运行.exe文件,并获取输出
有时在程序中需要运行其它的程序并获得输出的结果来进行进一步的处理。.NET框架已经提供了相应的类和方法,我们可以十分方便的实现我们的目标。
下面这个例子是我以前用到的,主要用到了Process 类和ProcessStartInfo类。
Process类的主要作用是提供对本地和远程进程的访问并使您能够启动和停止本地系统进程。
ProcessStartInfo类的主要作用是为Process类指定启动进程时使用的一组值。
代码
1 Process process = new Process();
2 ProcessStartInfo startInfo = new ProcessStartInfo("cmd.exe");
3 startInfo.UseShellExecute = false;
4 process.StartInfo = startInfo;
5 process.StartInfo.RedirectStandardInput = true;
6 process.StartInfo.RedirectStandardOutput = true;
7 process.Start();
8
9 process.StandardInput.WriteLine("netstat -an");
10 process.StandardInput.WriteLine("exit");
11
12 string netMessage = process.StandardOutput.ReadToEnd();
13 process.WaitForExit();
14 process.Close();
15 return netMessage;
2 ProcessStartInfo startInfo = new ProcessStartInfo("cmd.exe");
3 startInfo.UseShellExecute = false;
4 process.StartInfo = startInfo;
5 process.StartInfo.RedirectStandardInput = true;
6 process.StartInfo.RedirectStandardOutput = true;
7 process.Start();
8
9 process.StandardInput.WriteLine("netstat -an");
10 process.StandardInput.WriteLine("exit");
11
12 string netMessage = process.StandardOutput.ReadToEnd();
13 process.WaitForExit();
14 process.Close();
15 return netMessage;
上面一段代码的作用是在新的进程中打开一个控制台,运行"netstat -an"命令,并获取输出的结果。