/ SUBSYSTEM: programme Windows ne sera pas écrire la ligne de commandes
-
23-09-2019 - |
Question
J'ai un mode mixte C ++ - programme CLI dans Visual Studio 2005 qui est configuré pour utiliser le / SUBSYSTEM: Windows. D'une manière générale, il est une application graphique qui est lancé à partir de son raccourci ou par le type de fichier enregistré à elle.
Cependant, il y a une occasion rare où un utilisateur voudra exécuter à partir de la ligne de commande avec des arguments. Je peux accéder aux arguments très bien, son quand il vient d'écrire à la console, en réponse au programme lancé depuis la ligne de commande avec des arguments, où je ne vois pas Console::WriteLine
avoir un effet.
Qu'est-ce que je fais mal?
La solution
Celui-ci est ennuyeux, je suis d'accord. Tu ne fais rien de mal, il est une bizarrerie de la façon dont Windows est configuré.
Il est possible de résoudre ce problème, au moins dans certains cas, voir http://blogs.msdn.com/junfeng/archive/2004/02/06/68531.aspx . Je n'ai pas rencontré quelqu'un d'autre qui est en fait utilisé ces méthodes bien.
La plupart des gens créer deux IME juste versions de l'exécutable avec des noms différents, un pour les utilisateurs de traitement par lots ( « MyApp.exe ») et un pour quand il est exécuté à partir du menu de démarrage ( « myappw.exe »).
Pour plus d'informations, quelques-unes des suggestions à Comment sortie la console en C ++ / Windows peut être utile.
Autres conseils
Il est un vieux problème - voir http://www.codeproject.com/KB /cpp/EditBin.aspx des solutions
Vous pouvez également rouvrir les cours d'eau à une console
int WINAPI WinMain(HINSTANCE hInst, HINSTANCE /*hPrevInst*/, LPSTR cmd_line, int showmode)
{
AllocConsole(); //create a console
ifstream conin("con"); // not sure if this should be "con:" ?
ofstream conout("con");
cout.rdbuf(conout.rdbuf());
cerr.rdbuf(conout.rdbuf());
cin.rdbuf(conin.rdbuf());
FreeConsole();
return 0;
}
edit: Désolé, c'est pur C ++, ne sais pas C ++ / cli