Выполнение команд консольной программы из другой программы - C#

Узнай цену своей работы

Формулировка задачи:

Подскажите пожалуйста можно ли получить контроль над консольной прогой из другой самописной проги. То есть есть запущеная консольная прога, чтобы запустить какое то действие из этой проги, соответственно нужно в ней напечатать команду и нажать Enter для запуска команды. Как самописной прогой отправлять такие команды, как бутто их ввожу я, руками?

Решение задачи: «Выполнение команд консольной программы из другой программы»

textual
Листинг программы
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Diagnostics;
  6. using System.Drawing;
  7. using System.IO;
  8. using System.Linq;
  9. using System.Text;
  10. using System.Threading;
  11. using System.Threading.Tasks;
  12. using System.Windows.Forms;
  13.  
  14. namespace Tower
  15. {
  16.     public partial class Form1 : Form
  17.     {
  18.         public Form1()
  19.         {
  20.             InitializeComponent();          
  21.         }
  22.  
  23.  
  24.         private void Form1_Load(object sender, EventArgs e)
  25.         {
  26.             Process process = new Process();
  27.             process.StartInfo.FileName = @"D:\Drone\MAVProxy\MAVProxy.exe";
  28.             // Indicate that we want to read from standard output
  29.             // of process
  30.             process.StartInfo.RedirectStandardInput = true;
  31.             // Indicate that we want to write to standard input of
  32.             // process
  33.             process.StartInfo.RedirectStandardOutput = true;
  34.             process.StartInfo.UseShellExecute = false;
  35.             process.Start();
  36.             tBox_Log.Text = "MAVProxy starting...";
  37.  
  38.             StreamWriter writer = process.StandardInput;
  39.             // Get a StreamReader to read from standard output of
  40.             StreamReader reader = process.StandardOutput;
  41.             // Get the question from greeter
  42.             tBox_Log.Text = reader.ReadLine();
  43.             // Answer Greeter with Robot
  44.             writer.WriteLine("link add 127.0.0.1:14550");
  45.             tBox_Log.Text = reader.ReadLine();
  46.  
  47.             Thread readThread = new Thread(new ThreadStart(readData));
  48.             readThread.Start();
  49.             Thread writeThread = new Thread(new ThreadStart(writeData));
  50.             writeThread.Start();
  51.         }
  52.  
  53.             private void readData()
  54.             {
  55.                 String readBuff;
  56.                 while ((readBuff = reader.ReadLine()) != null) //Read received data from connected programm
  57.                 {
  58.                     tBox_Log.Text = readBuff;
  59.                     writer.WriteLine(readBuff);
  60.                 }
  61.             }
  62.  
  63.             private void writeData()
  64.             {
  65.                 String writeBuff;
  66.                 while ((writeBuff = Console.ReadLine()) != null)//Writing data to connected programm
  67.                 {
  68.                     tBox_Log.Text = writeBuff;
  69.                     writer.WriteLine(writeBuff);
  70.                 }
  71.             }
  72.     }
  73. }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 3.9 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы