Wie kann ich die Konsolen-Ausgabe eines DOS-Fensters in mein Programm einlesen?


Mein Programm soll ein DOS-Programm aufrufen. Jetzt kann es sein, daß dieses Programm Ausgaben (z.B. Fehlermeldungen) in der Console anzeigt. Wie komme ich an die ran? Die Ausgabe in eine Datei umleiten wäre gut, funktioniert aber nicht, wenn ich das Umleitungszeichen mit als Parameter übergebe.

Bevor die DOS-Anwedung gestartet wird muß die Datei, in die die Ausgabe umgelenkt werden soll erstellt werden. (Das kann übrigens auch eine (Named)Pipe sein.) Dieses Handle sollte vererbbar sein.

Dann einfach in der StartupInfo Struktur beim CreateProcess dieses Handle angeben. Alle Handles, die nicht umgelenkt werden sollen, werden mit GetStdHandle() belegt. Dann noch in Flags USE_STD_HANDLES setzen und CreateProcess() aufrufen. Und ab geht die Post...

Infos zu CreateProcess stehen auch in Wie kann ich aus meiner Anwendung heraus ein anderes Programm starten und auf dessen Ende warten?

Delphi 1 Delphi 2 Delphi 3 Delphi 4
nicht getestet Version nicht betroffen getestet

siehe auch:


Delphi FAQ