У меня есть приложение WPF, в которое я хочу интегрировать модуль. другой модуль — исполняемый файл, который при нажатии запрашивает ответ пользователя. На основании ответа пользователя он обработает или завершит работу:
например:
C:\>Abc.exe press enter
> command1
//Executing command1 -- command1 will create a log file
>exit
//Exits the Abc.exe process
C:\>
Поэтому я хочу интегрировать эту часть в мое приложение WPf. Когда кнопка находится в приложении WPF, вышеуказанные шаги выполняются автоматически.
я понятия не имею, как выполнить приглашение оболочки, которое потребовало ввода данных пользователем.
Process process1 = new Process();
process1.StartInfo.FileName = "C:\\abc.exe";
process1.StartInfo.RedirectStandardInput = true;
process1.StartInfo.RedirectStandardError = true;
process1.StartInfo.UseShellExecute = false;
process1.StartInfo.CreateNoWindow = false;
process1.Start();
StreamWriter inputWriter = process1.StandardInput;
process1.StandardInput.WriteLine("command1");
process1.StandardInput.Flush();
System.Threading.Thread.Sleep(1500);
process1.StandardInput.WriteLine("exit");
process1.StandardInput.Flush();
process1.Kill();
Но он открывает abc.exe в консоли, но не выполняет команды, то есть command1 и завершает работу.
Я не знаю, как это сделать в WPF, но в Win32 вы бы использовали CreateProcess()
с перенаправленным вводом / выводом, так что вы можете отправлять свои собственные входные данные и читать любые выходные данные по мере необходимости.
Как порождать консольные процессы с перенаправленными стандартными дескрипторами
Создание дочернего процесса с перенаправленным вводом и выводом
Других решений пока нет …