AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Delphi - Konsolencommand ausführen und ergebnis abfangen
Thema durchsuchen
Ansicht
Themen-Optionen

Delphi - Konsolencommand ausführen und ergebnis abfangen

Offene Frage von "peter001"
Ein Thema von peter001 · begonnen am 11. Aug 2009 · letzter Beitrag vom 6. Sep 2009
Antwort Antwort
peter001

Registriert seit: 2. Nov 2008
17 Beiträge
 
#1

Delphi - Konsolencommand ausführen und ergebnis abfangen

  Alt 11. Aug 2009, 19:09
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: http://www.delphipraxis.net/internal...ct.php?t=58475
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:
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;
Ich bin wie immer Dankbar für jede Hilfe
  Mit Zitat antworten Zitat
tomsson74

Registriert seit: 8. Jan 2008
73 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: Delphi - Konsolencommand ausführen und ergebnis abfangen

  Alt 12. Aug 2009, 16:46
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:

http://www.delphipraxis.net/topic140910

Grüße
Thomas
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.033 Beiträge
 
Delphi 12 Athens
 
#3

Re: Delphi - Konsolencommand ausführen und ergebnis abfangen

  Alt 12. Aug 2009, 16:52
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.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
peter001

Registriert seit: 2. Nov 2008
17 Beiträge
 
#4

Re: Delphi - Konsolencommand ausführen und ergebnis abfangen

  Alt 12. Aug 2009, 17:02
Zitat von tomsson74:
Bist Du sicher, dass ConTEXT.exe überhaupt eine Konsolenausgabe produziert ? Ist das nicht ein Editor der durch deine Funktion erstmal gestartet wird ?
Da sachste wat.
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 von tomsson74:
Ansonsten empfehle ich Dir diesen Thread:
Genau das was ich gesucht habe. Funktioniert alles super

Danke!
  Mit Zitat antworten Zitat
peter001

Registriert seit: 2. Nov 2008
17 Beiträge
 
#5

Re: Delphi - Konsolencommand ausführen und ergebnis abfangen

  Alt 6. Sep 2009, 22:46
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?
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:27 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz