Отправка / ожидание / получение данных из приложения CLI через приложение C # GUI на VS 2010 - PullRequest
0 голосов
/ 09 марта 2012

У меня есть .exe, который при открытии выглядит примерно так:

  1. Введите A: (ожидает ввода для A)
  2. Введите B: (дождитесь ввода B после ввода A)
  3. Ведение расчетов ..
  4. Почти готово ..
  5. Сумма A + B равна 10
  6. Нажмите Enter, чтобы выйти ..

Я написал некоторый код, основанный на других примерах, в StackOverflow (приложение C # GUI на VS 2010):

        ProcessStartInfo cmdStartInfo = new ProcessStartInfo();
        cmdStartInfo.FileName = @"c:\myTestService.exe";
        cmdStartInfo.RedirectStandardOutput = true;
        cmdStartInfo.RedirectStandardError = true;
        cmdStartInfo.RedirectStandardInput = true;
        cmdStartInfo.UseShellExecute = false;
        cmdStartInfo.CreateNoWindow = false;

        Process cmdProcess = new Process();
        cmdProcess.StartInfo = cmdStartInfo;
        cmdProcess.ErrorDataReceived += cmd_Error;
        cmdProcess.OutputDataReceived += cmd_DataReceived;
        cmdProcess.EnableRaisingEvents = true;
        cmdProcess.Start();
        cmdProcess.BeginOutputReadLine();
        cmdProcess.BeginErrorReadLine();
        cmdProcess.StandardInput.WriteLine(textBox1.Text);
        cmdProcess.StandardInput.WriteLine(textBox2.Text);

        static void cmd_DataReceived(object sender, DataReceivedEventArgs e)
        {
            MessageBox.Show("Output from other process: " + e.Data);
        }

        static void cmd_Error(object sender, DataReceivedEventArgs e)
        {
            MessageBox.Show("Error from other process: " + e.Data);
        }

Я передаю A и B через значения, введенные в два текстовых поля, но, видимо, это не работает должным образом. Как мне:

  • Введите A и подождите
  • После ввода A введите B и подождите
  • Когда консольное приложение возвращает «Сумма A + B равна 10», как мне получить значение 10?
  • Как отправить Enter как параметр для принудительного закрытия приложения?

Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...