J'essaie de créer un processus sur une machine distante en utilisant la classe System.Diagnostics.Process. Je suis capable de créer un processus. Mais le problème est que la création d'un service prend beaucoup de temps et la fenêtre de la console s'affiche. Une autre chose ennuyeuse est que la fenêtre de la console est affichée au-dessus de mon formulaire Windows et je ne peux pas faire d'autres opérations sur ce formulaire. J'ai défini toutes les propriétés comme CreateNoWindow = true
,
proc.StartInfo.WindowStyle = ProcessWindowStyle.Hidden
mais il montre toujours la fenêtre de la console. même j'ai redirigé la sortie et les erreurs vers un flux séparé mais pas de chance.
Existe-t-il un autre moyen de masquer la fenêtre de la console? Sil te plait aide moi .
Voici la partie de mon code que j'ai utilisée pour exécuter la commande sc.
Process proc = new Process();
proc.StartInfo.UseShellExecute = false;
proc.StartInfo.CreateNoWindow = true;
proc.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
proc.StartInfo.FileName = "sc";
proc.StartInfo.Arguments = string.Format(@"\\SYS25 create MySvc binPath= C:\mysvc.exe");
proc.StartInfo.RedirectStandardError = false;
proc.StartInfo.RedirectStandardOutput = false;
proc.StartInfo.UseShellExecute = false;
proc.StartInfo.CreateNoWindow = true;
proc.Start();
proc.WaitForExit();
la source
proc.StartInfo.RedirectedStandardOutput = true
? J'ai réussi à faire fonctionner cela avec une application Windows.UseShellExecute
etCreateNoWindow
deux fois?Réponses:
J'ai eu un problème similaire lors de la tentative de démarrage d'un processus sans afficher la fenêtre de la console. J'ai testé avec plusieurs combinaisons différentes de valeurs de propriété jusqu'à ce que j'en trouve une qui présente le comportement que je voulais.
Voici une page détaillant pourquoi la
UseShellExecute
propriété doit être définie sur false.http://msdn.microsoft.com/en-us/library/system.diagnostics.processstartinfo.createnowindow.aspx
Sous la section Remarques sur la page:
la source
startInfo.UseShellExecute = false;
J'ai eu de la malchance avec cette réponse, le processus (Wix light.exe) sortant essentiellement pour déjeuner et ne rentrant pas à la maison à temps pour le dîner. Cependant, ce qui suit a bien fonctionné pour moi:
la source
CreateNoWindow = true
n'a pas fonctionné pour moi, cela a fait :)Cela devrait fonctionner, essayez;
Ajoutez une référence système.
Ensuite, utilisez ce code pour exécuter votre commande dans une fenêtre CMD cachée.
la source
Cela ne montre pas la fenêtre:
la source