Masquer la fenêtre de la console dans l'application console C #

105

Le fait est que je ne veux vraiment pas que la fenêtre de la console s'affiche ... mais la solution devrait être en cours d'exécution. Mon point ici est que je veux que l'application continue de fonctionner en arrière-plan, sans qu'aucune fenêtre ne s'affiche.

Utilisateur SOF
la source
2
Pouvez-vous nous donner un peu plus d'informations sur ce que l'application doit faire? Cela semble être un service ou une application Windows? Avec un peu de connaissances sur son objectif, nous pourrions aider beaucoup plus et suggérer la meilleure façon de résoudre ce problème.
Dave
Son application keylogger. J'ai utilisé le service Windows mais il ne peut pas obtenir les états clés dans le service Windows
Utilisateur SOF

Réponses:

188

Modifier le type de sortie de la console d' application à application Windows . Cela peut être fait sous Projet -> Propriétés -> Application dans Visual Studio:

texte alternatif

Dirk Vollmar
la source
4
La fenêtre de la console clignote et revient en arrière. Comment puis-je faire fonctionner l'application sans aucune fenêtre?
Utilisateur SOF
@SOF User: Comment démarrer l'application? En double-cliquant dans l'Explorateur ou depuis le menu Démarrer?
Dirk Vollmar
j'ai également mis Console.ReadLine ();
Utilisateur SOF
16
Retirez le fichier Console.ReadLine. Cela n'a aucun sens si vous n'avez pas de fenêtre de console.
Dirk Vollmar
1
@ KarolŻurowski: L'idée ici est que vous utiliseriez ceci pour les applications qui viennent également avec une certaine forme d'interface utilisateur (par exemple, une icône dans la barre d'état système) ou pour les applications qui effectuent une certaine tâche et se terminent automatiquement une fois terminé. Si vous n'avez ni l'un ni l'autre, l'application fonctionnera en arrière-plan jusqu'à la déconnexion / l'arrêt ou jusqu'à ce qu'elle soit explicitement supprimée, par exemple en utilisant le Gestionnaire de tâches.
Dirk Vollmar
26

Changez votre type d'application en une application Windows. Votre code fonctionnera toujours, mais il n'aura pas de fenêtre de console, ni de fenêtre Windows standard sauf si vous en créez une.

Sekhat
la source
2
La fenêtre de la console clignote et revient en arrière. Comment puis-je faire fonctionner l'application sans aucune fenêtre?
Utilisateur SOF
Vous vous assurez qu'il ne se termine pas. Il n'y a vraiment pas grand-chose à dire sans plus d'informations. Que fait le programme? Exécute-t-il quelque chose en boucle?
Lasse V. Karlsen
12

Au lieu de Console.Readline/keyvous pouvez enfin utiliser new ManualResetEvent(false).WaitOne(). Cela fonctionne bien pour moi.

khaja ​​kamal
la source
3

Vous souhaitez peut-être essayer de créer une application de service Windows . Il fonctionnera en arrière-plan, sans aucune interface utilisateur.

bla
la source
3
Le service Windows ne peut pas obtenir les événements de touche enfoncée
Utilisateur SOF
1
Les services sont sévèrement limités en fonction de votre application, à partir de Windows Vista, ils sont forcés à la session 0 et ne peuvent donc rien effectuer dans d'autres sessions telles que l'affichage de messages contextuels.
Matt
1
@Matt "ne peut rien effectuer dans d'autres sessions" n'est pas entièrement vrai. Voici un projet de code pour un service qui ouvre une invite de commande d'administration sur le bureau de l'utilisateur connecté. codeproject.com/Articles/35773/...
Qodex
0

Modifier le type de sortie de la console d' application à application Windows ,

Et au lieu de cela, Console.Readline/keyvous pouvez utiliser new ManualResetEvent(false).WaitOne()à la fin pour maintenir l'application en cours d'exécution.

NT
la source