У меня есть это:
var startInfo = new ProcessStartInfo
{
FileName = _pathToExe,
RedirectStandardOutput = true,
RedirectStandardError = true,
RedirectStandardInput = true,
UseShellExecute = false,
WorkingDirectory = FilepathHelper.GetFolderFromFullPath(_pathToExe),
CreateNoWindow = true,
WindowStyle = ProcessWindowStyle.Hidden
};
try
{
using (_proc = Process.Start(startInfo))
{
_proc.EnableRaisingEvents = true;
_proc.ErrorDataReceived += proc_DataReceived;
_proc.OutputDataReceived += proc_DataReceived;
_proc.BeginErrorReadLine();
_proc.BeginOutputReadLine();
var myStreamWriter = _proc.StandardInput;
var allArgs = "";
foreach (var arg in _args)
allArgs += arg + Environment.NewLine;
myStreamWriter.Write(allArgs);
_proc.WaitForExit();
}
}
catch (Exception e)
{
Console.WriteLine(e);
}
И я выполняю * .exe, который кто-то написал. Для этого конкретного * .exe - даже если вы ясно видите выше, что я установил ProcessWindowStyle.Hidden, я все еще вижу черное окно со словами «Нажмите любую клавишу для выхода». Это * .exe - если я запускаю из командной строки (вместо того, чтобы вызывать его из моего кода на C #), получается огромное количество текстового вывода на консоль. Я не вижу этот выходной текст, когда я запускаю свой код C #, что я хочу, а также означает, что перенаправление работает.
Я проверил, и процесс завершен - как будто само командное окно добавляет этот дополнительный (нежелательный) шаг.
Кто-нибудь сталкивался с этим раньше, и если да, то как мне от этого избавиться?