Existe-t-il un moyen de masquer la fenêtre de la console lors de l'exécution d'une application de console?
J'utilise actuellement une application Windows Forms pour démarrer un processus de console, mais je ne souhaite pas que la fenêtre de la console s'affiche pendant l'exécution de la tâche.
c#
console-application
Aaron Thomas
la source
la source
Réponses:
Si vous utilisez la
ProcessStartInfo
classe, vous pouvez définir le style de fenêtre sur hidden - dans le cas des applications console (et non GUI), vous devez définir CreateNoWindow surtrue
:la source
Si vous avez écrit l'application console, vous pouvez la masquer par défaut.
Créez une nouvelle application console puis changez le type "Type de sortie" en "Application Windows" (fait dans les propriétés du projet)
la source
Si vous utilisez Process Class, vous pouvez écrire
avant
yourprocess.start();
et le processus sera cachéla source
La réponse simple est la suivante: Accédez aux propriétés de votre application console (propriétés du projet). Dans l'onglet "Application", changez simplement le "Type de sortie" en "Application Windows". C'est tout.
la source
Vous pouvez utiliser l' API FreeConsole pour détacher la console du processus:
(bien sûr cela n'est applicable que si vous avez accès au code source de l'application console)
la source
FreeConsole
fasse ce que son nom dit, cela n'empêche pas Windows d'afficher la console avant qu'elle ne soit appelée.[DllImport("kernel32.dll")] static extern bool AllocConsole();
vous permet de facilement exécuter avec une console à partir d' une application standard Win32Si vous êtes intéressé par la sortie, vous pouvez utiliser cette fonction:
Il exécute le programme de ligne de commande donné, attend qu'il se termine et renvoie la sortie sous forme de chaîne.
la source
Si vous créez un programme qui ne nécessite pas d'entrée utilisateur, vous pouvez toujours simplement le créer en tant que service. Un service n'affichera aucun type d'interface utilisateur.
la source
Ajoutez ceci à votre classe pour importer le fichier DLL:
Et puis si vous souhaitez le masquer, utilisez cette commande:
Et si vous souhaitez afficher la console:
la source
Je sais que je ne réponds pas exactement à ce que vous voulez, mais je me demande si vous posez la bonne question.
Pourquoi n'utilisez-vous pas non plus:
Cela ressemble à de meilleures options si tout ce que vous voulez est d'exécuter un processus.
la source
Bien que, comme d'autres réponses ici l'ont indiqué, vous pouvez changer le "Type de sortie" en "Application Windows", sachez que cela signifie que vous ne pouvez pas l'utiliser
Console.In
car il deviendra un NullStreamReader.Console.Out
etConsole.Error
semblent toujours bien fonctionner cependant.la source
Console.In
-il quand il n'y a pas de console pour entrer quelque chose? D'où doit venir quelque chose qui peut être consulté viaConsole.In
? Cela n'a aucun sens. En d'autres termes: il est tout à fait évident et logique que ceConsole.In
soit unNullStreamReader
dans ce cas.Basé sur la réponse d'Adam Markowitz ci-dessus, ce qui suit a fonctionné pour moi:
la source
J'ai une solution générale à partager:
Incluez simplement cette classe dans votre projet et appelez
Magician.DisappearConsole();
.Une console clignotera lorsque vous démarrez le programme en cliquant dessus. Lors de l'exécution à partir de l'invite de commande, l'invite de commande disparaît très peu de temps après l'exécution.
Je fais cela pour un Discord Bot qui s'exécute pour toujours en arrière-plan de mon ordinateur en tant que processus invisible. C'était plus facile que de faire travailler TopShelf pour moi. Quelques tutoriels TopShelf m'ont échoué avant d'écrire ceci avec l'aide d'un code que j'ai trouvé ailleurs. ; P
J'ai également essayé simplement de modifier les paramètres dans Visual Studio> Projet> Propriétés> Application pour lancer en tant qu'application Windows au lieu d'une application console, et quelque chose à propos de mon projet a empêché cela de cacher ma console - peut-être parce que DSharpPlus demande de lancer une console au démarrage . Je ne sais pas. Quelle que soit la raison, cette classe me permet de tuer facilement la console après son apparition.
J'espère que ce magicien aide quelqu'un. ;)
la source
Ecrivez
la source