J'essaie de créer un processus sur une machine distante à l'aide de 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 que la fenêtre de la console s’affiche. Une autre chose gênante est que la fenêtre de la console est affichée en haut de mon formulaire Windows et que je ne peux effectuer aucune autre opération sur ce formulaire. J'ai défini toutes les propriétés comme CreateNoWindow = true
,
proc.StartInfo.WindowStyle = ProcessWindowStyle.Hidden
mais toujours il montre la fenêtre de la console. même si j'ai redirigé la sortie et les erreurs pour séparer le flux 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 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();
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 différentes combinaisons de valeurs de propriétés jusqu'à ce que j'en trouve une qui présente le comportement souhaité.
Voici une page détaillant pourquoi la propriété UseShellExecute
doit être définie sur false.
http://msdn.Microsoft.com/en-us/library/system.diagnostics.processstartinfo.createnowindow.aspx
Sous la section Remarques de la page:
Si la propriété UseShellExecute a la valeur true ou si les propriétés Nom d'utilisateur et Mot de passe ne sont pas null, la valeur de la propriété CreateNoWindow est ignorée et une nouvelle fenêtre est créée.
ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.FileName = fullPath;
startInfo.Arguments = args;
startInfo.RedirectStandardOutput = true;
startInfo.RedirectStandardError = true;
startInfo.UseShellExecute = false;
startInfo.CreateNoWindow = true;
Process processTemp = new Process();
processTemp.StartInfo = startInfo;
processTemp.EnableRaisingEvents = true;
try
{
processTemp.Start();
}
catch (Exception e)
{
throw;
}
J'ai eu de la malchance avec cette réponse, avec le processus (Wix light.exe) qui consiste essentiellement à aller déjeuner et à ne pas rentrer à la maison à temps pour le dîner. Cependant, les éléments suivants ont bien fonctionné pour moi:
Process p = new Process();
p.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
// etc, then start process
Cela devrait fonctionner, essayez;
Ajouter une référence système.
using System.Diagnostics;
Utilisez ensuite ce code pour exécuter votre commande dans une fenêtre cachée de CMD.
Process cmd = new Process();
cmd.StartInfo.FileName = "cmd.exe";
cmd.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
cmd.StartInfo.Arguments = "Enter your command here";
cmd.Start();
Cela ne montre pas la fenêtre:
Process cmd = new Process();
cmd.StartInfo.FileName = "cmd.exe";
cmd.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
cmd.StartInfo.CreateNoWindow = true;
...
cmd.Start();