代码如下:
using System;
using System.Collections.Generic;using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Diagnostics;
using System.IO;
namespace OA3._0_Tool
{
public partial class Form1 : Form
{
public Process process = null;
public Form1()
{
InitializeComponent();
}
private void OutPutForm_Shown(string CMDcommand)
{
Control.CheckForIllegalCrossThreadCalls = false;
process = new Process();
process.StartInfo.FileName = "cmd.exe";
process.StartInfo.WorkingDirectory = ".";
process.StartInfo.UseShellExecute = false;
process.StartInfo.RedirectStandardInput = true;
process.StartInfo.RedirectStandardOutput = true;
process.StartInfo.CreateNoWindow = true;
//Process.Start("cmd.exe");
process.OutputDataReceived += new DataReceivedEventHandler(OutputHandler);
process.Start();
process.StandardInput.WriteLine(CMDcommand);//执行CMD命令
//process.StandardInput.WriteLine("exit");
process.BeginOutputReadLine();
//using (StreamWriter sw = new StreamWriter("output.log"))
//{
// sw.WriteLine(process.StandardOutput.ReadToEnd());
//}
}
private void OutputHandler(object sendingProcess,DataReceivedEventArgs outLine)
{
if (!String.IsNullOrEmpty(outLine.Data))
{
StringBuilder sb = new StringBuilder(this.textBox1.Text);
this.textBox1.Text = sb.AppendLine(outLine.Data).ToString();
this.textBox1.SelectionStart =this.textBox1.Text.Length;//每次刷新显示最后输出字符
this.textBox1.ScrollToCaret();
}
}
public void executeCmd(string Command)
{
Process p = new Process();
p.StartInfo.FileName = " cmd.exe ";
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardInput = true;
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.CreateNoWindow = true;
p.Start();
p.StandardInput.WriteLine(Command);
p.StandardInput.WriteLine("exit");
p.WaitForExit();
this.textBox1.Text = textBox1.Text + p.StandardOutput.ReadToEnd();
// this.textBox1.SelectionStart = this.textBox1.Text.Length;
p.Close();
}
private void OutPutForm_FormClosing(object sender, FormClosingEventArgs e)
{
if (process != null)
process.Close();
}
private void button1_Click(object sender, EventArgs e)
{
OutPutForm_Shown(textBox2.Text);
//executeCmd(textBox2.Text);
}
}
}