Gib den kompletten Befehl in "Command" an und las Params leer
CaptureDosCmd('ping localhost','',Memo1.lines);
Und das er wartet, bis der Prozess zu ende ist liegt an diesem teil :
Delphi-Quellcode:
repeat
WaitHandle := WaitForSingleObject( ProcessInfo.hProcess,0);
CurSize := FileSeek(ReadPipe,0,2);
If (CurSize >= 4096) then // Puffer in Memo ausgeben und damit leeren
GetBuffer;
Application.ProcessMessages;
until (WaitHandle = WAIT_OBJECT_0) or (WaitHandle = WAIT_FAILED) or application.terminated;
if not application.terminated then begin
CurSize := FileSeek(ReadPipe,0,2);
If (CurSize > 0 ) then // Falls Rest im Puffer, in Memo ausgeben
GetBuffer;
end
else
OutPutMemo.add('# Operation canceled!');
FreeMem(CaptureBuffer);
CloseHandle(ProcessInfo.hProcess);
CloseHandle(ProcessInfo.hThread);
CloseHandle(ReadPipe);
CloseHandle(writePipe);
end
Das "WaitForSingleObject" wartet bis der Prozess beendet ist.
Du musst diesen Teil irdenwie umschreiben und regelmässig die Readpipe leeren
(vielleicht über nen Timer ??)