Подтвердить что ты не робот

Запуск процесса в С# без отвлекающего окна консоли

Я выясню, как запустить процесс. Но теперь проблема в том, что консольное окно (в этом случае 7z) всплывает вперед, блокируя мое видение и удаляя мой фокус, прерывая мое предложение, или w/e, я делаю каждые несколько секунд. Это очень раздражает, как я могу предотвратить это. Я думал, что CreateNoWindow решает это, но это не так.

ПРИМЕЧАНИЕ. Иногда консоли требуется ввод пользователя (замените файл или нет). Таким образом, полное скрытие этого может быть проблемой.

Это мой текущий код.

void doSomething(...)
{
    myProcess.StartInfo.FileName = ...;
    myProcess.StartInfo.Arguments = ...;
    myProcess.StartInfo.CreateNoWindow = true;
    myProcess.Start();
    myProcess.WaitForExit();
}
4b9b3361

Ответ 1

Если я правильно помню, это сработало для меня

Process process = new Process();

// Stop the process from opening a new window
process.StartInfo.RedirectStandardOutput = true;
process.StartInfo.UseShellExecute = false;
process.StartInfo.CreateNoWindow = true;

// Setup executable and parameters
process.StartInfo.FileName = @"c:\test.exe"
process.StartInfo.Arguments = "--test";

// Go
process.Start();

Я использовал это из консольного приложения С# для запуска другого процесса, и он прекращает запуск приложения в отдельном окне, вместо этого сохраняя все в одном окне.

Ответ 2

@galets По вашему предложению окно все еще создано, только оно начинает сведено к минимуму. Это было бы лучше для того, чтобы на самом деле делать то, что хотел acidzombie24:

myProcess.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;

Ответ 3

Попробуйте следующее:

myProcess.StartInfo.WindowStyle = ProcessWindowStyle.Minimized;

Ответ 4

Мне придется дважды проверять, но я считаю, что вам также нужно установить UseShellExecute = false. Это также позволяет захватывать стандартные потоки вывода/ошибок.