add method to allow closing input/output/stderr pipe

git-svn-id: trunk@3096 -
This commit is contained in:
micha 2006-03-31 19:09:42 +00:00
parent f26e214fe9
commit e8bb38a7e0

View File

@ -90,10 +90,14 @@ Type
FStderrStream : TInputPipeStream;
procedure CloseProcessHandles; virtual;
Procedure CreateStreams(InHandle,OutHandle,ErrHandle : Longint);virtual;
procedure FreeStream(var AStream: THandleStream);
Public
Constructor Create (AOwner : TComponent);override;
Destructor Destroy; override;
Procedure Execute; virtual;
procedure CloseInput; virtual;
procedure CloseOutput; virtual;
procedure CloseStderr; virtual;
Function Resume : Integer; virtual;
Function Suspend : Integer; virtual;
Function Terminate (AExitCode : Integer): Boolean; virtual;
@ -156,17 +160,6 @@ begin
end;
Procedure TProcess.FreeStreams;
procedure FreeStream(var S: THandleStream);
begin
if (S<>Nil) then
begin
FileClose(S.Handle);
FreeAndNil(S);
end;
end;
begin
If FStderrStream<>FOutputStream then
FreeStream(FStderrStream);
@ -203,6 +196,27 @@ begin
FStderrStream:=TInputPipeStream.Create(ErrHandle);
end;
procedure TProcess.FreeStream(var AStream: THandleStream);
begin
if AStream = nil then exit;
FileClose(AStream.Handle);
FreeAndNil(AStream);
end;
procedure TProcess.CloseInput;
begin
FreeStream(FInputStream);
end;
procedure TProcess.CloseOutput;
begin
FreeStream(FOutputStream);
end;
procedure TProcess.CloseStderr;
begin
FreeStream(FStderrStream);
end;
Procedure TProcess.SetWindowColumns (Value : Cardinal);