Je crée un projet C # Winforms pouvant être exécuté en tant que GUI ou peut être utilisé à partir de la ligne de commande. Actuellement, je peux traiter les intrants et les arguments de la ligne de commande. Je peux exécuter le programme de la ligne de commande et je peux utiliser le programme pour traiter les arguments. Mais la console.writeine () ne fait absolument rien. Tout indice que cela pourrait être? P>
7 Réponses :
Cela concerne le type de projet lorsque vous le configurez sur l'onglet App sur les propriétés du projet, vous avez 3 options: p>
Si vous travaillez avec la demande Win, vous pouvez également traiter les arguments de la ligne de commande, car ceux-ci sont reçus sur la fonction principale. P>
Le projet doit être défini pour compiler à une application de la console pour fonctionner pour fonctionner. D'autre part, il aura toujours toujours une fenêtre de console, même lorsque vous courez comme une interface graphique. Je ne connais pas une solution de contournement pour cela (mais il serait intéressé d'entendre parler de celui-ci s'il y en a un). P>
Ceci est dû au fait que vous avez écrit une application WinForms - cela signifie que system.console.out code>
(c'est-à-dire que le flux de sortie standard) est défini sur stream.null code>
. Cela signifie que tous les appels à ce flux échoueront silencieusement. P>
Vous êtes en mesure de traiter l'entrée de la ligne de commande car ils proviennent d'un flux différent. La morale de l'histoire est que vous pouvez avoir une application WinForms ou une application de ligne de commande, mais pas à la fois à la fois. P>
Oui, sorte de ... appels de l'API Windows à la rescousse :)
Cette réponse devrait être supprimée en raison de la déclaration inexacte: "La morale de l'histoire est que vous pouvez avoir une application WinForms, ou une application de ligne de commande, mais pas à la fois à la fois." GLS123 le reproche.
Pour la plupart, voir le Répondre ici . Cependant, je voudrais souligner l'existence de l'appel freeconsole () code> API, qui vous permet de fermer gracieusement la console.
[DllImport("kernel32.dll")]
static extern int FreeConsole()
Cette solution fonctionne bien. Heureusement, je n'ai pas besoin de tuyaux. Merci!!
Vous pouvez activer la console dans une application Windows Forms à l'aide des Dllimports suivants:
FreeConsole();
Je l'ai fait dans un fil d'arrière-plan qui exécute une fonction d'une DLL chargée de manière dynamique (réflexion) ma console était vide jusqu'à ce que j'ai ajouté la console.setout (), je suis Pas sûr que vous devez appeler getStdhandle () p> p>
Merci, j'avais un alloconsole qui travaillait depuis un certain temps et tout à coup, il n'a plus rien. Ajouter la console.setout () a fait le tour!
Wow, il y a beaucoup de réponses sur la manière de résoudre ce problème. Les vôtres ont travaillé après avoir examiné la douzaine passée. J'utilise Kernel32 "attachconsole". Nécessaire le nouveau Streamwriter, l'autoflush à true et la configuration.
Vous devrez peut-être changer le type d'application. Cela peut être fait en le modifiant via des propriétés de l'application dans l'interface graphique (comme expliqué dans le répondez de Consultutah) ou vous pouvez Modifier le fichier winform / wpf: p> console ( c'est quoi Vous avez besoin de dll (y compris les applications Web): p> .csproj code> fichier strud>:
console.writeline () code> pour fonctionner strud>): p>
Voyez ici: Stackoverflow.com/questions/807998/...
Vous voulez dire lors de l'exécution de votre programme en mode ligne de commande appelant console.writeline semble échouer en silence?
Pouvez-vous essayer ci-dessous simple - statique vide (String [] args) {foreach (string arg en args) {console.writeine (ARG); } Console.readline (); } est-ce que ça marche?
Merci thorarin c'est probablement exactement ce que je cherchais. Donc, je suppose que même si la ligne de commande peut exécuter mon programme d'application GUI ... Afin d'écrire ou d'interagir avec elle, je dois créer une nouvelle ligne de commande et l'attacher? Est-ce exact?
Pour tous les autres: j'ai besoin du programme pour courir en guise d'interface graphique ou de commande. Ainsi modifier les paramètres du projet dans ce cas ne sera pas utile.
Dupliqué possible de console.writeline n'apparaît pas dans la fenêtre de sortie < / a>