Konsole schliessen



  • Hallo,
    ich möchte ein paar Ausgaben von meinem Programm in eine Konsole umlenken. Dies mach ich mit folgendem Code, der so auch klappt.

    //Konsole öffnen
    	AllocConsole();
    
    	//stdout umleiten
    	freopen("CONOUT$", "w", stdout);
    
    	using std::cout;
    	cout<<"Test\n";
    
    	//Ausgabestream schliessen
    	fclose(stdout);
    

    Nun hab ich das Problem, wenn der Anwender die Konsole mit dem X rechts oben (keine ahnung wie das heisst) schliesst, dann beendet sich auch die ganze Anwendung ohne den Warndialog den ich sonst beim OnCloseQuery-Event erscheinen lasse.

    Hat jemand ne Idee wie ich den Dialog auch bei der Konsole bringen kann?

    Was ich auch überlegt habe ist so eine Art "Drücken sie eine beliebige Taste um das Fenster zu schliessen" anzeige in der Konsole. Aber da scheiterts grad daran das ich stdin nicht in die Konsole umgelenkt bekomme um dann nach einer Eingabe

    FreeConsole();
    

    aufzurufen.

    Gruß
    korny



  • ok, also stdin konnt ich auch umlenken

    freopen("CONIN$", "rb", stdin);
    

    bleibt noch das problem vom schliessen der konsole. Kann man evtl. Windows dazu bringen für das fenster kein "X" anzubieten oder das auszublenden?



  • Hallo

    Eventuell mit speziellen WinAPI-Funktionen. Aber auf jedenfall nicht mit Funktionen aus C/C++ oder der VCL.

    bis bald
    akari



  • Dieser Thread wurde von Moderator/in akari aus dem Forum VCL (C++ Builder) in das Forum WinAPI verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Mal ne ganz blöde Frage:

    Wieso was genau soll denn das Konsolenfenster tun ?

    Wenn man einen neuen Prozess starten will reicht ein exec oder system() Aufruf wenn man was anzeigen will erzeugt man ein Fenster (ohne Close-Button) und schreibt den Text rein.

    Soll der Anwender interaktiv was mit der neuen Konsole machen ?

    Muss es überhaupt eine Konsole sein ?



  • SetConsoleCtrlHandler


Anmelden zum Antworten