while BytesRead > 0 do
if PeekNamedPipe(hReadPipe, @Dest[0], 1024, @Avail, nil, nil) then
begin
if Avail > 0 then
begin
try
FillChar(Dest, SizeOf(Dest), 0);
ReadFile(hReadPipe, Dest[0], Avail, BytesRead, nil);
TmpStr := Copy(Dest, 0, BytesRead);
all := all + TmpStr;
finally
end;
end
else
Break;
end
else
Break;
if wrResult <> WAIT_TIMEOUT then
begin
ExitCode := 1;
// Output.Add('ÔËÐÐÍê³É£¡')
end
else
begin
if TC > TimeOut then
if TerminateProcess(PI.hProcess, 0) then
begin
sEnd := 'ÔËÐг¬Ê±£¬Ç¿ÖƽáÊø£¡'
end
else
begin
sEnd := 'ÔËÐг¬Ê±£¬Ç¿ÖƽáÊøʧ°Ü£¡'
end;
end;
end;
GetExitCodeProcess(PI.hProcess, ExitCode);
CloseHandle(PI.hProcess);
CloseHandle(PI.hThread);
end
else
Output.Add('ÔËÐв»ÄܽøÐУ¡');
Output.Text := all;
if sEnd <> '' then
Output.Add(sEnd);
all := '';
tmpstr := '';
sEnd := '';
finally
CloseHandle(hReadPipe);
CloseHandle(hWritePipe);
end;
end;