Si proc.StartInfo.UseShellExecute es falsa, a continuación, va a iniciar el proceso y puede utilizar:
proc.StartInfo.CreateNoWindow = true;
Si proc.StartInfo.UseShellExecute es cierto , a continuación, el sistema operativo es iniciando el proceso y debe proporcionar una "pista" al proceso a través de:
proc.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
Sin embargo, la llamada La aplicación ed puede ignorar esta última solicitud.
Si se utiliza UseShellExecute = falsa, es posible que desee considerar redirigir la salida/error estándar, para capturar cualquier registro generado:
proc.StartInfo.UseShellExecute = false;
proc.StartInfo.RedirectStandardOutput = true;
proc.OutputDataReceived += new DataReceivedEventHandler(ProcessOutputHandler);
proc.StartInfo.RedirectStandardError = true;
proc.ErrorDataReceived += new DataReceivedEventHandler(ProcessOutputHandler);
Y tienen una función como
private void ProcessOutputHandler(object sendingProcess, DataReceivedEventArgs outLine)
{
if (!String.IsNullOrEmpty(outLine.Data)) // use the output outLine.Data somehow;
}
Hay una buena página que cubre CreateNoWindow
esto en an MSDN blog.
También hay un error en Windows que puede arrojar un cuadro de diálogo y derrotar CreateNoWindow
si está pasando un nombre de usuario/contraseña. Para más detalles
http://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=98476 http://support.microsoft.com/?kbid=818858
A veces funciona, otros no. ¿Esto depende de los comandos del archivo bat? – Ahmed
Ahmed, he hecho la respuesta más completa y las dos opciones diferentes que tiene para ocultar la ventana. Además, dependiendo de la aplicación, creo que todavía puede tener que salir y hacer algunas ventanas a pesar de sus mejores esfuerzos. –