![]() |
Delphi - Konsolencommand ausführen und ergebnis abfangen
Hallo!
Ich habe schon viel gesucht und einiges gefunden. Und zwar möchte ich, dass ich mit meinem Delphiprogramm eine Anwendung starte und deren Output auslese, damit ich diesen in meiner Anwendung als String verarbeiten kann. Man kann sich das so vorstellen, dass ich ein GUI für eine console-only-application bauen möchte. Fündig bin ich bereits hier geworden: ![]() Ich kann auf Knopfdruck Daten an die Konsole senden. Nur leider habe ich es nicht hinbekommen, dass dieses command auch ausgeführt wird. Die Konsole zeigt mir genau das, was ich ihr sende, passieren tut aber nichts. Gibt es eine Möglichkeit, das ohne größere aufwände (extra frameworks, addons, etc) hinzukriegen? Mein bisheriger Codeschnipsel:
Delphi-Quellcode:
Ich bin wie immer Dankbar für jede Hilfe :drunken:
procedure TForm1.compileClick(Sender: TObject);
var hIn: THandle; hOut: THandle; c: char; iRead, iWritten: cardinal; s: string; begin opusage.Caption := 'Das Fenster wird nun für die Konsolenausgabe benutzt'; clearlog.Enabled := true; resetqcfile.Enabled := false; toclipboard.Enabled := true; AllocConsole; hIn := GetStdHandle(STD_INPUT_HANDLE); hOut := GetStdHandle(STD_OUTPUT_HANDLE); FlushFileBuffers(hIn); s := 'H:\Programme\ConTEXT\ConTEXT.exe'; WriteFile(hOut, s[1], Length(s), iWritten, nil); repeat ReadFile(hIn, c, 1, iRead, nil); if c = #13 then Break else s := s + c; until false; FreeConsole; end; |
Re: Delphi - Konsolencommand ausführen und ergebnis abfangen
Bist Du sicher, dass ConTEXT.exe überhaupt eine Konsolenausgabe produziert ? Ist das nicht ein Editor der durch deine Funktion erstmal gestartet wird ?
Ansonsten empfehle ich Dir diesen Thread: ![]() Grüße Thomas |
Re: Delphi - Konsolencommand ausführen und ergebnis abfangen
der genannte Link trifft schon die Lösung.
nun aber nochmal zum Problem ... durch WriteFile schreibst du zwar in die Ausgabe "deines Programmes", aber das ist eben nur eine Ausgabe und dort steckt kein Befehlsinterpreter dahinter. Wenn du ein anderes Programm ausführen willst, dann mußt du es schon per ShellExecuteEx oder CreateProcess ausführen und könntest dort dann dessen Ausgabe umleiten. |
Re: Delphi - Konsolencommand ausführen und ergebnis abfangen
Zitat:
Aber eigentlich wollte ich erstmal erreichen, dass überhaupt etwas passiert wird und das command das ich übergebe ausgeführt wird, was ja scheinbar nicht der fall war. Zitat:
Danke! :love: |
Re: Delphi - Konsolencommand ausführen und ergebnis abfangen
uh, eben gerade ein problem festgestellt...
wenn die anwendung, die man per konsole aufrufen will, nun mit einem "Press any key to close window..." endet, und auf eine eingabe wartet, hängt sich die ganze anwendung mit auf und es passiert nichts mehr... kann ich dem vorbeugen? oder ein command noch mitschicken nachdem ich den kompletten output empfangen habe? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:25 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz