Выполнение команд консольной программы из другой программы - C#
Формулировка задачи:
Подскажите пожалуйста можно ли получить контроль над консольной прогой из другой самописной проги. То есть есть запущеная консольная прога, чтобы запустить какое то действие из этой проги, соответственно нужно в ней напечатать команду и нажать Enter для запуска команды. Как самописной прогой отправлять такие команды, как бутто их ввожу я, руками?
Решение задачи: «Выполнение команд консольной программы из другой программы»
textual
Листинг программы
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Diagnostics; using System.Drawing; using System.IO; using System.Linq; using System.Text; using System.Threading; using System.Threading.Tasks; using System.Windows.Forms; namespace Tower { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { Process process = new Process(); process.StartInfo.FileName = @"D:\Drone\MAVProxy\MAVProxy.exe"; // Indicate that we want to read from standard output // of process process.StartInfo.RedirectStandardInput = true; // Indicate that we want to write to standard input of // process process.StartInfo.RedirectStandardOutput = true; process.StartInfo.UseShellExecute = false; process.Start(); tBox_Log.Text = "MAVProxy starting..."; StreamWriter writer = process.StandardInput; // Get a StreamReader to read from standard output of StreamReader reader = process.StandardOutput; // Get the question from greeter tBox_Log.Text = reader.ReadLine(); // Answer Greeter with Robot writer.WriteLine("link add 127.0.0.1:14550"); tBox_Log.Text = reader.ReadLine(); Thread readThread = new Thread(new ThreadStart(readData)); readThread.Start(); Thread writeThread = new Thread(new ThreadStart(writeData)); writeThread.Start(); } private void readData() { String readBuff; while ((readBuff = reader.ReadLine()) != null) //Read received data from connected programm { tBox_Log.Text = readBuff; writer.WriteLine(readBuff); } } private void writeData() { String writeBuff; while ((writeBuff = Console.ReadLine()) != null)//Writing data to connected programm { tBox_Log.Text = writeBuff; writer.WriteLine(writeBuff); } } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д