Entwickler-Ecke

Sonstiges (Delphi) - CMD fenster in delphi Form anzeigen lassen


Petros - Di 30.03.10 17:06
Titel: CMD fenster in delphi Form anzeigen lassen
Hallo an alle. Ich habe mal eine frage und habe dazu bisher keine lösung gefunden habe..
ich möchte gerne ein cms fenster in eine delphi form anzeigen lassen... habe dazu auch ein pic hochgeladen um zu sehen welche fenster ich meine (bitte nicht wundern das es 3 mal das selbe fenster ist da die anderen nur starten wenn ein DB server an ist...)

hier mal meine vorstellung was ich meine damit

1. Form1 sind 3 Buttons
1.1 Button 1 = TitanICS.exe | Button 2 = LoginISC.exe | Button 3 = WeltISC.exe
soweit funktioniert alles per ShellExecute wenn ich drauf klicke öffnen sich die cmd fenster

nun möschte ich aber eine Form2 habe die sich öffnet sobald ich auf einen der buttos Klicke.. und die cmd fenster sollen dort angezeigt werden

2. Form2 sollen 3 fenster enthalten alle 3 unter einander
2.1 wenn ich nun button 1 -3 klicke sollen im Form2 nacheinander je nach welchem button ich drücke sollen die cmd fenster dort ausgeführt werden

ich habe auch mal ein bespiel hochgeladen um es mal zu verdeutlichen


Ich bedanke mich schon mal

MFG Petros


JonS - Di 30.03.10 17:39

Fang doch einfach alles ab und stell es in einer TMemo dar. bei den Schweizern (SwissDelphiCenter) gibt es einen Tipp dazu, wie man die Konsolenausgabe abfangen kann.

wfg Jon S.


Petros - Di 30.03.10 17:55

das finde ich ja mal cool hat funktioniert super danke für die antwort...

aber jetzt noch ein kleines problem was muss ich tun um mehrere anzeigen zu lassen also in memo2 und memo3 und wie stell ich das an das das cmd fenster nicht angezeigt wird

MFG Petros


guinnes - Di 30.03.10 18:08

Da gibts sogar eine Komponente dafür : TDosCommand, die u.A. vom Sirius erweitert worden ist
http://forum.delphi-treff.de/showpost.php?p=201783&postcount=9


Petros - Di 30.03.10 18:43

so komponete habe ich herunter geladen und in delphi integriert nur wie benutze ich diese jetzt


mfg Petros


guinnes - Mi 31.03.10 08:53

Na, so z.B. :

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
procedure TfrmTSMain.DosCommandNewLine(Sender: TObject; NewLine: String;
  OutputType: TOutputType);
begin
  mmDosCommand.Lines.Add(NewLine); // Neue Zeile ist im Dos-Fenster angekommen
end;


procedure TfrmTSMain.btnExecuteClick(Sender: TObject);
var
  Command : String;
begin
  if JvOpenDialog.Execute then
  begin
    JvOpenDialog.InitialDir := ExtractFilePath(JvOpenDialog.FileName);
    mmMeta.Lines.Clear;
    mmDosCommand.Lines.Clear;
    Command := ExtractFilePath(Application.ExeName) + 'tsmuxer "' + JvOpenDialog.FileName + '"';// Kommandozeile zusammenbauen
    DosCommand.CommandLine := Command;
    mmMeta.Text := Command;
    DosCommand.Execute;
  end;
end;


Petros - Mi 31.03.10 17:22

Danke!! funktioniert auch teilweise also er führt das project aus nur sobald ich die TitanICS.exe öffne sagt er mir C:\server\TitanICS.exe exestiert nicht obwohl ich die datei direckt herraus suche

was muss ich hier genau zusammen bauen


Delphi-Quelltext
1:
 Command := ExtractFilePath(Application.ExeName) + 'tsmuxer "' + JvOpenDialog.FileName + ' "';// Kommandozeile zusammenbauen                    

bei mir

Delphi-Quelltext
1:
 Command := ExtractFilePath(Application.ExeName) + 'C:\server\ "' + OpenDialog1.FileName + 'TitanICS.exe"';// Kommandozeile zusammenbauen                    


Habe es aber auch schon mit

Delphi-Quelltext
1:
 Command := ExtractFilePath(Application.ExeName) + 'TitanICS.exe "' + OpenDialog1.FileName + '"';// Kommandozeile zusammenbauen                    

versucht kommt jedesmal die selbe meldung

aber wie mache ich das ich die datei nicht raus suchen muss sondern auf den button klicke und es dann startet und die informationen dann im mmDosCommand ausliest..

und im mmDosCommand wird ja nur der pfad angezeigt und mmMeta bleibt leer ist ja auch logisch da er ja die datei nicht findet..


MFG Petros


guinnes - Mi 31.03.10 18:19

In Command kommt genau die Kommandozeile rein, die du auch an einer beliebigen Stelle auf deinen Platten eintippen würdest, und wenn die TitanICS.exe nicht in dem Verzeichniss liegt, wo auch deine Exe ist geht das so, wie du es probiert hast, natürlich nicht. In meinem Beispiel übergebe ich der TsMuxR einen File, darum der Opendialog


Petros - Mi 31.03.10 21:02

Recht Herzlichen dank guinnes funktioniert wunderbar so wie es soll und vielen dank an alle die dazu beigetragen haben ich habt mir sehr geholfen und es kammen sehr schnelle antworten von euch...

Für alle die dazu noch eine lösung suchen ohne Opendialog folgenes



Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
procedure TfrmTSMain.DosCommandNewLine(Sender: TObject; NewLine: String;
  OutputType: TOutputType);
begin
  Memo1.Lines.Add(NewLine); // Neue Zeile ist im Dos-Fenster angekommen
end;


procedure TfrmTSMain.btnExecuteClick(Sender: TObject);
var
  Command : String;
  begin
    Memo1.Lines.Clear;
    Memo2.Lines.Clear;
    Command := ExtractFilePath(Application.ExeName) + 'beispiel.exe';// Pfad der exe datei
    DosCommand.CommandLine := Command;
    Memo1.Text := Command;
    DosCommand.Execute;
  end;
end;



MFG Petros