Einzelnen Beitrag anzeigen

nahpets
(Gast)

n/a Beiträge
 
#5

AW: Consolenausgaben LIVE abfangen

  Alt 20. Aug 2015, 15:46
Da TriggerPipe eine Komponente ist, solltest Du sie eventuell installieren, dann kann Delphi sie auch finden.

Wenn allerdings alle Routinen, die Du probiert hast, Dein Programm nicht starten, hast Du vermutlich kein Problem mit Delphi und der Verarbeitung von Pipes, sondern ein vollkommen anderes.
Wenn
Code:
cmd.exe /c dir c:\
nicht gestartet wird, erscheint mir das schon sehr seltsam.

Bei meiner Routine steht in der Caption des Formulares nach dem Aufruf auch der Exitcode. Was steht denn bei Dir dort?
Bei dem cmd von oben sollte der ExitCode 0 sein, sonst wurde der Prozess erst garnicht gefunden oder hat sich (aus welchen Gründen auch immer) verabschiedet.

Ändere bitte mal in meinem Teil die Routine TForm1.Button1Click ab:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
  meOutput.Lines.Clear;
  // Das kann ein bisserl dauern...
  TriggerPipe.CommandLine := 'cmd.exe /c dir c:\ /s';
  if not TriggerPipe.Execute then begin
    ShowMessage(Format('Rückgabewert: %d',[TriggerPipe.ReturnCode]));
  end else begin
    ShowMessage('Eigentlich sollte das hier alles Ordnunggemäß funktioniert haben.');
  end;
end;
Was bekommst Du hier zu sehen?

Das über TriggerPipe gestartete Programm sollte im Taskmanager zu sehen sein, ist dem so?

Was ist das denn für ein Programm, das Du da aufrufen möchtest?

Steht es im gleichen Verzeichnis, wie das von Dir erstellte Programm?
Oder gibst Du den Programmname mit vollständigem Pfad an?
Oder ist das Programm über den Suchpfad von Windows zu erreichen?
Startet das Programm, wenn Du in dem Verzeichnis, in dem die von Dir erstellte Exe liegt, über die Konsole aufrufst?
Wenn nein, welche Meldung wird ausgegeben?
Was passiert, wenn Du eine Kommandozeile aufmachst, nach c:\ ins Hauptverzeichnis wechselst und das Programm dann dort aufrufst? Klappt das? Wenn ja, bitte Screenshot hier zur Verfügung stellen, eventuell kann man daran erkennen, ob das Programm überhaupt StdIn und StdOut von Windows nutzt. Wenn nicht, hast Du mit den hier besprochenen Routinen keine Chance.
  Mit Zitat antworten Zitat