Запуск процесса в C # без отвлечения окна консоли - PullRequest
52 голосов
/ 11 апреля 2009

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

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

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

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

Ответы [ 4 ]

82 голосов
/ 11 апреля 2009

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

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();

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

19 голосов
/ 09 июля 2010

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

myProcess.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
3 голосов
/ 11 апреля 2009

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

3 голосов
/ 11 апреля 2009

Попробуйте это:

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