Lorsque je démarre un nouveau processus, quelle différence cela fait-il si j'utilise le
WindowStyle = hidden
ou l'
CreateNoWindow = true
propriété de l' ProcessStartInfo
classe?
Lorsque je démarre un nouveau processus, quelle différence cela fait-il si j'utilise le
WindowStyle = hidden
ou l'
CreateNoWindow = true
propriété de l' ProcessStartInfo
classe?
Hans dit, WindowStyle est une recommandation adoptée par le processus, l'application peut choisir de l'ignorer.
CreateNoWindow contrôle la façon dont la console fonctionne pour le processus de l'enfant, mais il ne travaille pas seul.
CreateNoWindow fonctionne en conjonction avec UseShellExecute comme suit:
Pour exécuter le processus sans fenêtre:
ProcessStartInfo info = new ProcessStartInfo(fileName, arg);
info.CreateNoWindow = true;
info.UseShellExecute = false;
Process processChild = Process.Start(info);
Pour exécuter le processus de l'enfant dans sa propre fenêtre (console)
UseShellExecute=true, which is the default value.
ProcessStartInfo info = new ProcessStartInfo(fileName, arg);
Process processChild = Process.Start(info); // separate window
Pour exécuter le processus de l'enfant dans le parent de la fenêtre de la console
UseShellExecute=false.
ProcessStartInfo info = new ProcessStartInfo(fileName, arg);
info.UseShellExecute = false; // causes consoles to share window
Process processChild = Process.Start(info);
CreateNoWindow ne s'applique qu'en mode console apps, il ne crée pas la fenêtre de la console.
WindowStyle s'applique uniquement à Windows natif applications à interface graphique. C'est un soupçon transmises à la WinMain() point d'entrée d'un tel programme. Quatrième argument, nCmdShow, pour lui dire comment afficher la fenêtre principale. C'est le même indice qui apparaît comme le "Run" dans un raccourci sur le bureau. Notez que "caché" n'est pas une option, peu correctement conçu Windows programme d'honorer cette demande. Depuis que snookers l'utilisateur, il ne peut pas obtenir le programme activé plus et ne peut le tuer avec le Gestionnaire de Tâches.
À l'aide de Réflecteur, il ressemble WindowStyle
est utilisé si l' UseShellExecute
est réglé, sinon, il utilise CreateNoWindow
.
Dans MSDN exemple, vous pouvez voir comment ils ont mis:
// 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();
Dans l'autre exemple, c'est juste ci-dessous parce qu' UseShellExecute
valeur par défaut est true
// UseShellExecute defaults to true, so use the WindowStyle
ProcessStartInfo startInfo = new ProcessStartInfo("IExplore.exe");
startInfo.WindowStyle = ProcessWindowStyle.Minimized;
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.