У меня есть .exe, который при открытии выглядит примерно так:
- Введите A: (ожидает ввода для A)
- Введите B: (дождитесь ввода B после ввода A)
- Ведение расчетов ..
- Почти готово ..
- Сумма A + B равна 10
- Нажмите 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 как параметр для принудительного закрытия приложения?
Спасибо!