web-dev-qa-db-fra.com

Lancement du processus dans C # sans déranger la fenêtre de la console

Je sais comment lancer un processus. Mais mon problème est maintenant que la fenêtre de la console (dans ce cas 7z) apparaît en avant bloquant ma vision et supprimant ma concentration interrompant ma phrase ou w/e que je fais toutes les quelques secondes. C'est extrêmement ennuyeux, comment puis-je empêcher que cela se produise. Je pensais que CreateNoWindow résout cela, mais ce n'est pas le cas.

REMARQUE: parfois, la console nécessite une entrée utilisateur (remplacer le fichier ou non). Donc, le cacher complètement peut être un problème.

Ceci est mon code actuel.

void doSomething(...)
{
    myProcess.StartInfo.FileName = ...;
    myProcess.StartInfo.Arguments = ...;
    myProcess.StartInfo.CreateNoWindow = true;
    myProcess.Start();
    myProcess.WaitForExit();
}
54
user34537

Si je me souviens bien, cela a fonctionné pour moi

Process process = new Process();

// Stop the process from opening a new window
process.StartInfo.RedirectStandardOutput = true;
process.StartInfo.UseShellExecute = false;
process.StartInfo.CreateNoWindow = true;

// Setup executable and parameters
process.StartInfo.FileName = @"c:\test.exe"
process.StartInfo.Arguments = "--test";

// Go
process.Start();

J'ai utilisé cela à partir d'une application console C # pour lancer un autre processus, et cela empêche l'application de le lancer dans une fenêtre séparée, au lieu de tout garder dans la même fenêtre.

84
Mun

@galets Dans votre suggestion, la fenêtre est toujours créée, seulement elle commence minimisée. Cela fonctionnerait mieux pour faire ce que voulait acidzombie24:

myProcess.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
20
codefox

Essaye ça:

myProcess.StartInfo.WindowStyle = ProcessWindowStyle.Minimized;
3
galets

Je devrai vérifier, mais je pense que vous devez également définir UseShellExecute = false. Cela vous permet également de capturer les flux de sortie/erreur standard.

3
Paul Alexander