Обратитесь к открытому процессу - PullRequest
0 голосов
/ 25 апреля 2019

Как получить доступ к процессу, уже запущенному на компьютере, прочитать строку или отправить новую команду.Предположим, что процесс работает на компьютере.

        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.

Что сделано неправильно?

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