Puede, pero con algunos inconvenientes:
Puede evitar tener esta ventana negro en el arranque si se compila para el subsistema de Windows.
pero luego se va a unir el proceso para la consola de llamada (cmd.exe) de forma manual a través de AttachConsole (-1) http://msdn.microsoft.com/en-us/library/windows/desktop/ms681952%28v=vs.85%29.aspx
Esto por sí solo no hace el trabajo. También hay que redirigir las tres corrientes std a la consola a través de estas llamadas:
// redirect unbuffered STDOUT to the console
lStdHandle = (long)GetStdHandle(STD_OUTPUT_HANDLE);
hConHandle = _open_osfhandle(lStdHandle, _O_TEXT);
fp = _fdopen(hConHandle, "w");
*stdout = *fp;
setvbuf(stdout, NULL, _IONBF, 0);
fp = _fdopen(hConHandle, "r");
*stdin = *fp;
setvbuf(stdin, NULL, _IONBF, 0);
// redirect unbuffered STDERR to the console
lStdHandle = (long)GetStdHandle(STD_ERROR_HANDLE);
hConHandle = _open_osfhandle(lStdHandle, _O_TEXT);
fp = _fdopen(hConHandle, "w");
*stderr = *fp;
setvbuf(stderr, NULL, _IONBF, 0);
// make cout, wcout, cin, wcin, wcerr, cerr, wclog and clog
// point to console as well
ios::sync_with_stdio();
Muestra de: http://cygwin.com/ml/cygwin/2004-05/msg00215.html
El problema con su llamada WinMain es que las ventanas ya ha bifurcada a cabo el proceso de manera que los cmd de llamadas .exe console ya habrá regresado de su .exe y continúe con el siguiente comando. Para evitar que pueda llamar a su exe con start /wait myexe.exe
De esta manera también obtiene el valor de retorno de su aplicación y puede verificarlo con% errorlevel% como de costumbre.
Si hay una forma de evitar que se bifurque el proceso con las ventanas del subsistema, por favor avíseme.
Espero que esto ayude.
¿Has intentado simplemente insertar tu código en la función Main() que se genera cuando creas una aplicación de winforms? En lugar de llamar a Application.Run()? –
Algo relacionado, especialmente si desea escribir en la consola desde una aplicación de Windows: http://stackoverflow.com/questions/666823/writing-to-the-command-line-in-a-windowed-app –