Выполнение команд консольной программы из другой программы - 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);
- }
- }
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д