Zwei Fragen zu system()



  • Hallo Forum!

    Wie oben beschrieben habe ich zwei Fragen zu system():
    1.(Wie) Ist es möglich das Aufklappen des Konsolenfensters zu unterbinden?
    2.(Wie) Ist es möglich die Rückgabe eines Befehles (z.B help) abzufangen
    bzw. in eine Datei zu schreiben?

    Vielen Dank schonmal!

    MfG Chris_



  • Für Konsolenanwendungen gibt es da Grenzen, weil auf der Systemebene gearbeitet werden muss. Man hat nur die von DOS vorgesehenen Systembefehle und deren Syntax. Aber die Rückgabe von /help in eine Datei sollte schon möglich sein. Suche die DOS-Dokumentation und dort nach Umleitungsparametern.

    Für Windows-Anwendungen gestaltet sich so etwas deutlich eindacher, weil dort mit WinApi auf einer Ebene höher gearbeitet wird.



  • Hallo

    system ist für Programmierer eigentlich nur eine Krücke. Verwende lieber gleich die direkten Funktion aus der WinAPI, um Kommandobefehle zu ersetzen (z.B. CopyFile für "copy") oder CreateProcess/ShellExecute um Programme oder Dateien auszuführen, dann erscheint auch kein zusätzliches Konsolenfenster.

    Ansonsten kannst du noch mit dem bereits genannten Umleitungsparameter die Ausgabe der Konsole in eine Datei umlenken (z.B. system("dir * > x.txt") speichert die Ausgabe von dir in der Datei x.txt). Allerdings hast du dann natürlich keine Eingriffsmöglichkeiten in der Konsole.
    Außerdem kannst du auch noch mit anderen WinAPI-Funktionen den Ausgabestream eines Konsolenprozesses umlenken.

    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.



  • Super! Vielen Dank schonmal dafür.

    Mit dem Umleitungsparameter komm ich jetzt zurecht, nur das Aufklappen stört mich noch, ist aber nur noch ein Schönheitsfehler.
    WinAPI möchte ich hier vermeiden, da ich eine Art erweiterte Konsole programmiere.

    MfG Chris_



  • Chris_ schrieb:

    Mit dem Umleitungsparameter komm ich jetzt zurecht, nur das Aufklappen stört mich noch, ist aber nur noch ein Schönheitsfehler.
    WinAPI möchte ich hier vermeiden, da ich eine Art erweiterte Konsole programmiere.

    Dann bist du bei WinApi doch wieder falsch aufgehoben. Mit dem kleinen Schönheitsfehler musst du wohl leben oder eben auf WinApi umsteigen. Konsolenanwendungen haben nun einmal eine sichtbare DOS-Arbeitsfläche, was ihr eigener Zweck ist. Wenn du das unterbinden willst, musst du wahrscheinlich tief ins System eingreifen.



  • Hi

    /* Hide consolewindows */
    #include <windows.h>

    int main()
    {
    hwnd = FindWindow("ConsoleWindowClass",NULL);
    ShowWindow(hwnd,SW_HIDE);
    
    ----
    ...
    ..
    }
    

    So unterbindest du das Consolenfenster des Prozesses.

    lowbyte



  • Warum nicht CreateProcess mit CREATE_NO_WINDOW!?
    http://msdn.microsoft.com/en-us/library/ms684863



  • @NULL_
    @Jochen Kalmbach

    Gut, beides dürfte gehen unter einer Windows-Systemoberfläche - die man heute gewöhnlich hat.
    Ich denke, die gestellten Fragen sind damit vollständig und hinreichend beantwortet.

    daddeldu - ich habe fertig :p



  • Hi

    @jochen
    Auch meine bevorzugte Variante.

    lowbyte



  • berniebutt schrieb:

    Ich denke, die gestellten Fragen sind damit vollständig und hinreichend beantwortet.

    Jawohl, vielen Dank dafür!

    MfG Chris_


Anmelden zum Antworten