main() statt WinMain()?
-
Hallo! Ich möchte ein Programm schreiben das abhängig von den übergebenen parametern entweder als konsolenprogramm oder als windowsanwendung gestartet wird. Ist sowas möglich?
shutdown.exe kann das ja auch:
shutdown -i
oder besseger gefragt:
wie kann ich aus winmain in die console schreiben?
wenn ich <iostream.h> einbinde und dann per cout was ausgeben möchte aus WinMain, geht das nicht. wie würde es denn gehen?
-
Ja das ist möglich, du musst mit der WinMain beginnen und AllocConsole aufrufen um eine Konsole zu bekommen
-
Auch also Konsolen-Anwendung kannst Du ganz normal Fenster erzeugen und somit eine "Window-Anwendung" machen...
Die meisten Applikationen gehen aber Folgenden Weg:
Sie erzeugen eine Consolen-Anwendung und eine *separate* Windows-Anwendung.
Die Consolen-Anwenundung wird dann nach *.com umbenannt. Beide heissen sozusagen gleich, aber wenn der Befehl in einer Console eingegeben wird, dann wird zuerst die *.com" gesucht... somit wird dann die "richtige" Consolen-Anwendung ausgeführt.ALs Beipsiel sie mir mal "devenv" (Visual Studio) aufgeführt.
-
Fencer schrieb:
Ja das ist möglich, du musst mit der WinMain beginnen und AllocConsole aufrufen um eine Konsole zu bekommen
dann gehen printf, scanf, etc. trotzdem noch nicht
Jochen Kalmbach schrieb:
Die meisten Applikationen gehen aber Folgenden Weg:
Sie erzeugen eine Consolen-Anwendung und eine *separate* Windows-Anwendung.zwei getrennte .exen sind aber ziemlich doof

-
sorry hat ich vergessen:
du musst noch einen Auruf an die Funktion freopen machenAllocConsole(); freopen("CONOUT$", "w", stdout);//bzw. : /* FILE *stream freopen_s( &stream, "CONOUT$", "w", stdout ); */ //wenn der Compiler (VS) meckert std::cout << "Hallo liebe Welt";
-
Hallo!
Ja das funktioniert!
Die neue konsole wird erzeugt, aber leider nur schwarz. Wird nichts ausgegeben
kann ich auch mit cin daten empfangen bei der console?
-
der folgende code zeigt ganz kurz die console und schliesst sie wieder:
Wenn ich aber vor return Sleep(10000); einfüge, wird die console 10 sekunden lang angezeigt. Aber warum geht cin nicht?//--------------------------------------------------------------------------- #include <windows.h> #include <iostream.h> //--------------------------------------------------------------------------- WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { AllocConsole(); char * huhu; cin>>huhu; cout << huhu; return 0; } //---------------------------------------------------------------------------
-
-
freopen..siehe oben
einmal mit "CONOUT" und stdindann müßte es funktionieren
oder natürlich wie in dem link mit WriteConsole.
FILE *stream; int i=0; AllocConsole(); //freopen("CONOUT$", "w", stdout); freopen_s( &stream, "CONOUT$", "w", stdout ); freopen_s(&stream, "CONIN$","r",stdin); std::cout << "Hallo an die Welt"<<endl; std::cin>>i; cout<<i<<endl; Sleep(5000);