Если proc.StartInfo.UseShellExecute является ложным, то вы запускаете процесс и может использовать:
proc.StartInfo.CreateNoWindow = true;
Если proc.StartInfo.UseShellExecute это правда, то ОС запуск этого процесса, и вы должны предоставить «подсказку» для этого процесса:
proc.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
Однако звонок это приложение может игнорировать этот последний запрос.
При использовании UseShellExecute = ложные, вы можете рассмотреть вопрос о перенаправлении стандартного вывода/ошибки, чтобы захватить любое протоколирование произведенное:
proc.StartInfo.UseShellExecute = false;
proc.StartInfo.RedirectStandardOutput = true;
proc.OutputDataReceived += new DataReceivedEventHandler(ProcessOutputHandler);
proc.StartInfo.RedirectStandardError = true;
proc.ErrorDataReceived += new DataReceivedEventHandler(ProcessOutputHandler);
И есть функция, как
private void ProcessOutputHandler(object sendingProcess, DataReceivedEventArgs outLine)
{
if (!String.IsNullOrEmpty(outLine.Data)) // use the output outLine.Data somehow;
}
Там в хорошая страница, покрывающая CreateNoWindow
это на an MSDN blog.
В Windows есть ошибка, которая может вызвать диалог и поразить CreateNoWindow
, если вы пропустите имя пользователя/пароль. Для получения дополнительной информации
http://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=98476 http://support.microsoft.com/?kbid=818858
Иногда работает, другие нет. Это зависит от команд bat-файла? – Ahmed
Ахмед, я сделал ответ более всеобъемлющим и два разных варианта, которые вы скрываете за окном. Кроме того, в зависимости от приложения, я думаю, вы все равно можете его разразиться и сделать некоторые окна, несмотря на ваши усилия. –