Delphi-PRAXiS

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.

strom 2. Jan 2015 06:55

AW: Memo als aktives CMD- Fenster
 
Hallo,
was mache ich falsch?

Delphi-Quellcode:
unit Unit1;

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, FileUtil, Forms, Controls, Graphics,
  Dialogs, unConsoleRedirector;// hier kommt schon eine Fehlermeldung!

type
  TForm1 = class(TForm)
  private
    { private declarations }
  public
    { public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.lfm}

end.
Fehlermeldung

"unit1.pas(9,12) Fatal: Can not find unit unConsoleRedirector used by Unit1 of the project inspector."

mkinzler 2. Jan 2015 07:23

AW: Memo als aktives CMD- Fenster
 
Befindet sich die Unit im (Such-)Pfad?
U.U. funktioniert diese in FPC nicht.

Namenloser 2. Jan 2015 14:19

AW: Memo als aktives CMD- Fenster
 
Für Freepascal muss man gegebenenfalls oben in die unConsoleRedirector.pas noch ein
Delphi-Quellcode:
{$mode Delphi}
einfügen. Ansonsten sollte es meiner Meinung nach funktionieren, solange die Zielplattform Windows ist.

Aber die Fehlermeldung deutet eher darauf hin, dass die Unit nicht im Suchpfad ist.

strom 3. Jan 2015 10:54

AW: Memo als aktives CMD- Fenster
 
Hallo,

nachdem es mit Lazarus (Freepascal) nicht funktoniert hat, habe ich es heute mit
Delphi XE 7 versucht!

"Unit Name unConsoleRedirector kann nicht aufgelöst werden!"

Auch ohne Erfolg! :?

Delphi-Quellcode:
unit Unit1;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, unConsoleRedirector ;

type
  TForm1 = class(TForm)
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;


var
  Form1: TForm1;

implementation

{$R *.dfm}

end.

mkinzler 3. Jan 2015 11:01

AW: Memo als aktives CMD- Fenster
 
Wenn die Datei nicht gefunden werden kann, dann wird sie nicht gefunden. und solange Du daran nicht änderst, wird es auch in der Zukunft nicht funktionieren.


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:10 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