Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Ausgabe eines DOS-Programmes (https://www.delphipraxis.net/34741-ausgabe-eines-dos-programmes.html)

CalganX 27. Nov 2004 17:14


Ausgabe eines DOS-Programmes
 
Hi,
ich habe bereits gesucht und auch was [dp="CaptureDOSCommand"]gefunden[/dp]. Allerdings funktioniert das nicht, wenn der User Eingaben machen muss. Was durchaus vorkommen kann.
Also wollte ich mich dem alten DOS-Trick bedienen und mit Hilfe von > die Ausgaben in eine Datei umleiten, um die Ausgabe zu erhalten aber gleichzeitig die Abfragen mitzubekommen. Also habe ich mir den String zusammengebastelt, der den Befehl enthalten soll und die Parameter angefügt und versucht mit Hilfe von ShellExecute das ganze auszuführen. Das hat allerdings nicht funktioniert, weil die Ausgabe-Datei nicht erzeugt wurde.
Dann habe ich es wie in dem gefundenen Source mit CreateProcess versucht. Das sieht dann so aus:
Delphi-Quellcode:
var
  sCommand: string;
  Startup: TStartUpInfo;
  ProcessInfo: TProcessInformation;
begin
{...}
      FillChar(Startup,Sizeof(Startup),#0);
      Startup.cb         := SizeOf(Startup);
      Startup.dwFlags    := STARTF_USESTDHANDLES +
                             STARTF_USESHOWWINDOW;
      Startup.wShowWindow := SW_SHOW;

      CreateProcess(nil,
        PChar(sCommand),
        nil,
        nil,
        true,
        NORMAL_PRIORITY_CLASS,
        nil,
        nil,
        Startup,
        ProcessInfo);
{...}
end;
Allerdings funktioniert das mit der gleichen Folge nicht: die Datei wird nicht erstellt.
Das Problem ist nur, dass auch der Befehl an sich nicht ausgeführt wird, obwohl in dem Testfall keine Abfragen an den User gestellt werden. :?
Der Befehls-String sieht z.B. so aus:
Code:
xcopy.exe "D:\Coden\work in progress\Xcopy-GUI\Source\*.pas" "D:\Coden\work in progress\Xcopy-GUI\Temp\" /Y > output.log
Wenn ich das in der Eingabeaufforderung das ganze ausführe, funktioniert das wunderbar.

Hat jemand dafür eine Erklärung/Lösung des ursprünglichen Problems, dass ich die Ausgabe brauche, aber trotzdem die Abfragen des Programms eingeben will (meinetwegen auch automatisch)?

Danke für jede Hilfe,
Chris

Ultimator 27. Nov 2004 17:19

Re: Ausgabe eines DOS-Programmes
 
Ich weiß jetzt nicht , ob du auch für ne andere Lösung offen bist, aber auf Delphi-Source hab ich das hier gefunden :stupid:

CalganX 27. Nov 2004 17:31

Re: Ausgabe eines DOS-Programmes
 
Hi,
das sieht schonmal ganz gut aus. :)

Danke,
Chris

CalganX 27. Nov 2004 17:45

Re: Ausgabe eines DOS-Programmes
 
Hi,
oder auch nicht. :?
Jetzt wird zwar die Datei erstellt, aber in der steht nichts drin und außerdem wird der Befehl nicht ausgeführt.

Also geht die Suche weiter...

Chris

mirage228 27. Nov 2004 17:48

Re: Ausgabe eines DOS-Programmes
 
Hi,

schonmal den probiert http://www.swissdelphicenter.com/de/showcode.php?id=990 ?

mfG
mirage228

CalganX 28. Nov 2004 20:40

Re: Ausgabe eines DOS-Programmes
 
Hi,
ich habe jetzt ein einfach ShellExecute genommen und den Befehl über die cmd.exe ausgeführt. Nach ein wenig herumspielen hat's dann auch funktioniert. :)

Danke für eure Hilfe,
Chris

supermuckl 28. Nov 2004 20:49

Re: Ausgabe eines DOS-Programmes
 
o_O über pipes is das doch viel cooler ^^

CalganX 28. Nov 2004 21:12

Re: Ausgabe eines DOS-Programmes
 
Hi,
allerdings hat bisher keine Lösung über Pipes funktioniert. ;) Und soweit funktioniert das ja und das sollte im Moment erstmal reichen. ;)

Chris


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:43 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz