. NET-WindowStyle = hidden vs. CreateNoWindow = true?


Cuando comienzo un nuevo proceso, ¿qué diferencia hace si utilizo el

WindowStyle = hidden

O el

CreateNoWindow = true

Propiedad de la clase ProcessStartInfo?

Author: Gabor, 2011-02-23

3 answers

Como dijo Hans, WindowStyle es una recomendación pasada al proceso, la aplicación puede optar por ignorarla.

CreateNoWindow controla cómo funciona la consola para el proceso hijo, pero no funciona solo.

CreateNoWindow funciona en conjunto con UseShellExecute de la siguiente manera:

Para ejecutar el proceso sin ninguna ventana:

ProcessStartInfo info = new ProcessStartInfo(fileName, arg); 
info.CreateNoWindow = true; 
info.UseShellExecute = false;
Process processChild = Process.Start(info); 

Para ejecutar el proceso hijo en su propia ventana (nueva consola)

ProcessStartInfo info = new ProcessStartInfo(fileName, arg); 
info.UseShellExecute = true; // which is the default value.
Process processChild = Process.Start(info); // separate window

Para ejecutar el proceso hijo en la consola del padre ventana

ProcessStartInfo info = new ProcessStartInfo(fileName, arg); 
info.UseShellExecute = false; // causes consoles to share window 
Process processChild = Process.Start(info); 
 71
Author: Liz,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-06-16 20:03:34

CreateNoWindow solo se aplica a las aplicaciones en modo consola, no creará la ventana de consola.

WindowStyle solo se aplica a aplicaciones GUI nativas de Windows. Es una pista pasada al punto de entrada WinMain () de dicho programa. Cuarto argumento, nCmdShow, diciéndole cómo mostrar su ventana principal. Esta es la misma pista que aparece como la configuración "Ejecutar" en un acceso directo del escritorio. Tenga en cuenta que "oculto" no es una opción allí, pocos programas de Windows diseñados correctamente honrar esa solicitud. Desde que snookers el usuario, ya no puede activar el programa y solo puede matarlo con el Administrador de tareas.

 17
Author: Hans Passant,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-10-01 21:35:32

Mediante Reflector, parece WindowStyle se utiliza si UseShellExecute se establece, de lo contrario, se utiliza CreateNoWindow.

En el ejemplo de MSDN, puede ver cómo lo configuran:

// Using CreateNoWindow requires UseShellExecute to be false
myProcess.StartInfo.UseShellExecute = false;
// You can start any process, HelloWorld is a do-nothing example.
myProcess.StartInfo.FileName = "C:\\HelloWorld.exe";
myProcess.StartInfo.CreateNoWindow = true;
myProcess.Start();

En el otro ejemplo, está justo debajo porque UseShellExecute está predeterminado a verdadero

// UseShellExecute defaults to true, so use the WindowStyle
ProcessStartInfo startInfo = new ProcessStartInfo("IExplore.exe");
startInfo.WindowStyle = ProcessWindowStyle.Minimized;
 12
Author: SwDevMan81,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-02-23 17:02:46