Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Memo als aktives CMD- Fenster (https://www.delphipraxis.net/183280-memo-als-aktives-cmd-fenster.html)

strom 27. Dez 2014 13:25

Memo als aktives CMD- Fenster
 
Hallo,

möchte ein aktives CMD- Fenster in der Anwendung haben, ist dieses Möglich?

Wenn ich zum Beispiel über einen Button einen Ping auslöse, sollen die TTL Zeiten
im Memo- Fenster dargestellt werden. Also in Delphi !

Perlsau 27. Dez 2014 13:37

AW: Memo als aktives CMD- Fenster
 
Da hätteste nur mal eben rüber zum Delphi-Treff wandern müssen, und schon hätteste dort eine Eins-A-Anleitung für dein Problem gefunden:

Ausgabe der Konsole in meinem Programm anzeigen


War übrigens einer der ersten Einträge eines Google-Suchresultats mit den Suchworten Delphi+Konsolenausgabe :lol:

strom 27. Dez 2014 13:54

AW: Memo als aktives CMD- Fenster
 
Hallo Perlsau :-)

haben diesen Link vorab schon getestet, bekomme aber im Memo- Fenster nur das END- Ergebnis!

Wenn ich im CMD Fenster einen ping auslöse, wird Zeile für Zeile im DOS- Fenster angezeigt!
Im Memo nicht, nur das END Ergebnis.

himitsu 27. Dez 2014 17:34

AW: Memo als aktives CMD- Fenster
 
Ist dir in dem verlinkten Code etwas aufgefallen, vorallem die Schleife?

Der Code darf nach Programmstart naürlich nicht bis zu dessen Beendigung warten, sondern muß regelmäßig den Inhalt auslesen und in den Memo schreiben. :stupid:
Das Auslesen könnte man über Timer machen, oder man muß irgendwie dafür sorgen, daß das Programm (VCL) nicht blockiert.

alda 27. Dez 2014 23:02

AW: Memo als aktives CMD- Fenster
 
Ich benutze die Lib hier: Klick mich
Verwendete Methode: DSiExecuteAndCapture

hathor 29. Dez 2014 00:12

AW: Memo als aktives CMD- Fenster
 
http://www.delphipraxis.net/183289-v...ml#post1284872

Namenloser 29. Dez 2014 10:07

AW: Memo als aktives CMD- Fenster
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Zitat von strom (Beitrag 1284791)
Hallo Perlsau :-)

haben diesen Link vorab schon getestet, bekomme aber im Memo- Fenster nur das END- Ergebnis!

Wenn ich im CMD Fenster einen ping auslöse, wird Zeile für Zeile im DOS- Fenster angezeigt!
Im Memo nicht, nur das END Ergebnis.

Du kannst diese Unit von mir verwenden: http://www.delphipraxis.net/1039634-post2.html
Da kriegst du live die Ausgabe.

Edit: Wobei ich gerade sehe, die Datei dort ist nicht auf dem neuesten Stand. Nimm lieber die aus dem Anhang.

Mavarik 29. Dez 2014 11:33

AW: Memo als aktives CMD- Fenster
 
Zitat:

Zitat von strom (Beitrag 1284788)
möchte ein aktives CMD- Fenster in der Anwendung haben, ist dieses Möglich?

Wenn ich zum Beispiel über einen Button einen Ping auslöse, sollen die TTL Zeiten
im Memo- Fenster dargestellt werden. Also in Delphi !

Warum den Umweg über den CMD?

Mavarik

strom 1. Jan 2015 19:22

AW: Memo als aktives CMD- Fenster
 
Hallo Namenloser,

kannst Du mir vielleicht weiter helfen? Komme mit Deinem Beispiel nicht weiter!

Danke :-)

-----------------------------------------------------------------------------

Es gibt einige Lösungen dazu im Netz, die meist aber erst das Ergebnis zurückliefern, wenn die Anwendung beendet wurde.
Wenn dir das nicht reicht, kannst du meine Klasse aus der Unit im Anhang benutzen. Sie stellt Events bereit, die aufgerufen werden, wenn neue Daten ankommen.

Beispiel:

Delphi-Quellcode:
type
  TMyForm = class(TForm)
    ...
  protected
    FRedirector: TConsoleRedirector;
    procedure MyEventHandler(Sender: TObject; const Data: string);
  end;

procedure TMyForm.MyEventHandler(Sender: TObject; const Data: string);
begin
  Memo1.Text := Memo1.Text+Data;
end;

procedure TMyForm.FormCreate(...);
begin
  FRedirector:= TConsoleRedirector.Create;
  FRedirector.OnReadOutput := MyEventHandler;
end;

procedure TMyForm.MyButtonClick(...);
begin
  FRedirector.Start('cmd /K ping google.com');
end;

Namenloser 1. Jan 2015 21:56

AW: Memo als aktives CMD- Fenster
 
1. Zieh ein Memo und einen Button auf dein Formular.
2. Füge oben in der Unit unter Uses unConsoleRedirector hinzu.
3. Passe den Code wie im Beispiel gezeigt an.


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:15 Uhr.
Seite 1 von 2  1 2      

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