/ SUBSISTEMA: programa de Windows no va a escribir en la línea de comandos
-
23-09-2019 - |
Pregunta
Tengo un modo C ++ mixta - CLI programa en Visual Studio 2005 que está configurado para utilizar el / SUBSISTEMA: Windows. En términos generales, es una aplicación gráfica que se lanza desde su acceso directo o mediante el tipo de archivo registrado a la misma.
Sin embargo, hay una rara ocasión en que un usuario querrá ejecutarlo desde la línea de comandos con argumentos. Puedo acceder a los argumentos muy bien, su cuando se trata de escribir en la consola, en respuesta al programa que está siendo lanzado desde la línea de comandos con argumentos, en la que no veo Console::WriteLine
tener ningún efecto.
¿Qué estoy haciendo mal?
Solución
Éste es molesto, estoy de acuerdo. No estás haciendo mal algo, es una peculiaridad de la forma en que Windows está configurado.
Es posible solucionar esto, al menos en algunos casos, véase http://blogs.msdn.com/junfeng/archive/2004/02/06/68531.aspx . No he encontrado a nadie que realmente se utiliza estos métodos sin embargo.
La mayoría de la gente simplemente IME crear dos versiones del ejecutable con nombres diferentes, uno para los usuarios por lotes ( "myapp.exe") y otro para cuando se ejecuta desde el menú de inicio ( "myappw.exe").
Para obtener más información, algunas de las sugerencias en Cómo salida a la consola en C ++ / Windows puede ser útil.
Otros consejos
Es un viejo problema - ver http://www.codeproject.com/KB /cpp/EditBin.aspx de soluciones
También puede volver a abrir las corrientes a una consola
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: Lo siento esto es pura C ++, no sé sobre C ++ / CLI