150 votes

Comment exécuter une application C# en console avec la console cachée

Existe-t-il un moyen de masquer la fenêtre de la console lors de l'exécution d'une application console ?

J'utilise actuellement une application Windows Forms pour lancer un processus de console, mais je ne veux pas que la fenêtre de console soit affichée pendant l'exécution de la tâche.

0 votes

Essayez d'exécuter l'application console à partir d'une tâche planifiée.

218voto

Simon Points 11945

Si vous avez écrit l'application console, vous pouvez la rendre cachée par défaut.

Créez une nouvelle application console puis changez le type "Output Type" en "Windows Application" (dans les propriétés du projet).

8 votes

J'essayais de cacher ma propre console, pas d'appeler quelque chose d'autre et de le cacher ensuite (comme la réponse acceptée le suppose) - donc c'était la meilleure pour moi. merci !

7 votes

Merci mon pote ! C'est ce que je cherchais aussi !

3 votes

La réponse acceptée suppose cela parce que c'est indiqué dans la question.

166voto

Adam Markowitz Points 4358

Si vous utilisez le ProcessStartInfo vous pouvez définir le style de la fenêtre comme étant caché - dans le cas d'applications de type console (et non GUI), vous devez définir CreateNoWindow à true :

System.Diagnostics.ProcessStartInfo start =
      new System.Diagnostics.ProcessStartInfo();
start.FileName = dir + @"\Myprocesstostart.exe";
start.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden; //Hides GUI
start.CreateNoWindow = true; //Hides console

27 votes

C'est exactement ce que j'allais poster :)

80 votes

Bon sang, quelqu'un de plus rapide que Jon ! =)

80 votes

J'ai dû étrangler sa connexion internet pour le battre ;)

69voto

Si vous utilisez la classe processus, vous pouvez écrire

yourprocess.StartInfo.UseShellExecute = false;
yourprocess.StartInfo.CreateNoWindow = true;

avant yourprocess.start(); et le processus sera caché

45voto

Cihan Points 141

La réponse est simple : Allez dans les propriétés de votre application console (propriétés du projet) et dans l'onglet "Application", changez simplement le "Type de sortie" en "Application Windows". C'est tout.

5 votes

Bullseye. Cela revient à créer une application Windows qui n'appelle aucun formulaire.

2 votes

C'est la bonne réponse. Aucune de vos autres approches de pansement. C'est la VRAIE réponse. Vous voulez que votre application n'ouvre jamais de console en premier lieu. De plus, vous voulez être capable d'ouvrir un formulaire à tout moment. Par exemple, notre formulaire est appelé lorsque l'utilisateur fait un clic droit sur l'icône de la barre d'état système et sélectionne les préférences. C'EST LA BONNE RÉPONSE ! !!

22voto

Thomas Levesque Points 141081

Vous pouvez utiliser le FreeConsole API pour détacher la console du processus :

[DllImport("kernel32.dll")]
static extern bool FreeConsole();

(bien sûr, ceci n'est applicable que si vous avez accès au code source de l'application console)

0 votes

Je voulais ne pas montrer la console. Alors que FreeConsole fait ce que son nom indique, il n'empêche pas Windows d'afficher la console avant qu'elle ne soit appelée.

5 votes

Compilez ensuite le projet comme une application Windows, et non comme une application console.

1 votes

Pour mémoire, c'est exactement ce que I nécessaire, merci. C'est aussi exactement ce que le titre demande :) Donc dans l'intérêt des autres voyageurs de google, +1

Prograide.com

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.

Powered by:

X