MSDN.WhiteKnight - Stack Overflow answers
Ответ на "Как выполнить последовательность команд cmd из WindowsForm?"
Answer 978850
cmd.exe принимает команды через свой стандартный ввод, а результат выдает в стандартный вывод. Соответственно, нужно перенаправить эти потоки при создании процесса:
public partial class Form1 : Form { Process process; public Form1() { InitializeComponent(); process = new Process(); process.StartInfo.FileName = "cmd.exe"; process.StartInfo.UseShellExecute = false; process.StartInfo.RedirectStandardOutput = true; process.StartInfo.RedirectStandardInput = true; process.StartInfo.StandardOutputEncoding = Encoding.GetEncoding(866); process.StartInfo.CreateNoWindow = true; process.OutputDataReceived += Process_OutputDataReceived; //подписываемся на событие появления новых данных process.Start(); process.BeginOutputReadLine(); //начинаем операции асинхронного чтения Output } private void Process_OutputDataReceived(object sender, DataReceivedEventArgs e) { //при получении данных из Output, выведем в TextBox Invoke(new Action(() => { textBox1.Text += e.Data + Environment.NewLine; })); } void SendCommand(string cmd) { process.StandardInput.WriteLine(cmd); process.StandardInput.Flush(); } private void button1_Click(object sender, EventArgs e) { SendCommand("program.exe arg1 arg2"); } private void Form1_FormClosed(object sender, FormClosedEventArgs e) { process.StandardInput.WriteLine("exit"); process.StandardInput.Flush(); process.Close(); } }
Content is retrieved from StackExchange API.
Auto-generated by ruso-archive tools.