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?

Était-ce utile?

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top