Как обратиться к уже запущенному на компьютере процессу, прочитать линию или подать новую команду. Допустим на компьютере запущен Process.
Process process = new Process();
process.StartInfo.FileName = "cmd.exe";
process.StartInfo.RedirectStandardInput = true;
process.StartInfo.RedirectStandardOutput = true;
process.StartInfo.UseShellExecute = false;
process.StartInfo.CreateNoWindow = true;
process.StartInfo.WorkingDirectory = @"C:\[PathFolder]";
process.StartInfo.Arguments = "/K index";
process.Start();
process.StandardInput.WriteLine(@"Hello World!");
string output = process.StandardOutput.ReadLine();
В этом месте все работает, и мы получаем строку. Мы можем так же подать следующею команду.
process.StandardInput.WriteLine(@"Hello World 2019!");
Но как допустим из акции контроллера прочитать строку или подать новую команду этому процессу. Первая строка правильно получает сам процесс и можно вывести его Id.
public IActionResult Index()
{
Process proc = Process.GetProcessesByName("index").FirstOrDefault();
ViewData["Message"] = proc.Id;
proc.StandardInput.WriteLine(@"Hello World!");
ViewData["MessageTwo"] = proc.StandardOutput.ReadLine();
return View();
}
Но при попытки прочитать или передать. В моем случае получаем ошибку, в зависимости от операции.
StandardOut has not been redirected or the process hasn't started yet.
или
StandardIn has not been redirected.
Что сделано не так?
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости