源代码应该有问题,你还不如先解决源代码的问题,而不是只是想着怎么自动重启。
下面的代码仅供参考:
functionReadPipe(Pipe:THandle;varBytesRemain:Integer):AnsiString;
//通过管道读取Cmd控制台的输出,BytesRemain为未读的字节数
var
TextBuffer:array[1..32767]ofAnsiChar;
BytesRead:LongWord;
PipeSize:Cardinal;
begin
Result:='';
PipeSize:=Sizeof(TextBuffer);
//检查管道是否有东西可读
PeekNamedPipe(Pipe,nil,PipeSize,@BytesRead,@PipeSize,@BytesRemain);
ifBytesRead>0then
begin
ReadFile(Pipe,TextBuffer,PipeSize,BytesRead,nil);
Result:=AnsiString(TextBuffer);//TextBuffer内含的是AnsiString字符串
SetLength(Result,BytesRead);
end;
end;
|