5,392
社区成员
发帖
与我相关
我的任务
分享
function ReadPipe(Pipe: THandle; var BytesRemain: Integer): AnsiString;
//通过管道读取Cmd控制台的输出,BytesRemain为未读的字节数
var
TextBuffer: array[1..32767] of AnsiChar;
BytesRead : LongWord;
PipeSize : Cardinal;
begin
Result := '';
PipeSize := Sizeof(TextBuffer);
//检查管道是否有东西可读
PeekNamedPipe(Pipe, nil, PipeSize, @BytesRead, @PipeSize, @BytesRemain);
if BytesRead > 0 then
begin
ReadFile(Pipe, TextBuffer, PipeSize, BytesRead, nil);
Result := AnsiString(TextBuffer); //TextBuffer内含的是AnsiString字符串
SetLength(Result, BytesRead);
end;
end;