Как получить доступ к процессу, уже запущенному на компьютере, прочитать строку или отправить новую команду.Предположим, что процесс работает на компьютере.
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.
Что сделано неправильно?