Выполнение команд консольной программы из другой программы - 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);
                }
            }
    }
}

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


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

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

10   голосов , оценка 3.9 из 5
Похожие ответы