Ajouter cette fonction quelque part dans une classe à votre projet: (nécessite un using System.Runtime.InteropServices;
au-dessus de la classe)
[DllImport("kernel32.dll")]
private static extern bool AttachConsole(int dwProcessId);
[DllImport("kernel32.dll")]
private static extern bool FreeConsole();
Alors appelez AttachConsole(-1)
Maintenant, vous pouvez utiliser la classe System.Console comme d'habitude d'écrire à la console et définir les couleurs et autres joyeusetés. Si vous n'avez plus besoin d'écrire sur la console, appelez le FreeConsole()
pour détacher votre processus. Sachez que cela n'empêche pas la console de traiter d'autres commandes.
L'utilisateur est toujours autorisé à entrer n'importe quoi dans la console à tout moment.
La méthode recommandée est la suivante:
- Créer une application console
- Ecrire à ce que vous voulez.
- Appelez
FreeConsole()
dès que vous n'en avez plus besoin.
- Ouvrez votre formulaire en utilisant
Application.Run()
. Ne pas utiliser application.Run et afficher uniquement le formulaire ne crée pas une boucle de message appropriée et des choses étranges peuvent se produire.
Vous pouvez basculer entre 3 et 4, mais dès que vous appelez la méthode Application.Run
, le code ne continuera pas tant que le formulaire n'est pas fermé. Donc, soit écrire dans la console dans le formulaire et le libérer à partir de là ou engendrer le formulaire dans un thread séparé (qui a d'autres conséquences secondaires inattendues)
Vous pouvez fournir n'importe quel ID de processus à la fonction AttachConsole. -1 par défaut au processus parent qui est probablement ce que vous voulez.
Pourquoi une application Windows doit-elle réécrire dans une fenêtre de console?Pourquoi ne pas simplement faire apparaître un formulaire non-modal dans l'application Windows et y mettre la sortie? Comment pouvez-vous garantir que l'application Windows a même été démarrée à partir d'une fenêtre cmd.exe? –
Processus parent? – leppie
Dupliquer de: http://stackoverflow.com/questions/394816/how-to-get-parent-process-in-net-in-managed-way –