Содержание материала

 

А это исправленный Song'ом вариант для обеспечения вывода текста в real-time:

Code:

procedure RunDosInMemo(CmdLine:String;AMemo:TMemo);

const

  ReadBuffer = 2400;

var

Security       : TSecurityAttributes;

ReadPipe,WritePipe  : THandle;

start        : TStartUpInfo;

ProcessInfo     : TProcessInformation;

Buffer        : Pchar;

BytesRead      : DWord;

Apprunning      : DWord;

begin

Screen.Cursor:=CrHourGlass;

Form1.Button1.Enabled:=False;

With Security do begin

nlength        := SizeOf(TSecurityAttributes);

binherithandle    := true;

lpsecuritydescriptor := nil;

end;

if Createpipe (ReadPipe, WritePipe,

        @Security, 0) then begin

Buffer  := AllocMem(ReadBuffer + 1);

FillChar(Start,Sizeof(Start),#0);

start.cb      := SizeOf(start);

start.hStdOutput  := WritePipe;

start.hStdInput  := ReadPipe;

start.dwFlags   := STARTF_USESTDHANDLES +

            STARTF_USESHOWWINDOW;

start.wShowWindow := SW_HIDE;

 

if CreateProcess(nil,

     PChar(CmdLine),

     @Security,

     @Security,

     true,

     NORMAL_PRIORITY_CLASS,

     nil,

     nil,

     start,

     ProcessInfo)

then

begin

  repeat

  Apprunning := WaitForSingleObject

         (ProcessInfo.hProcess,100);

   ReadFile(ReadPipe,Buffer[0],

      ReadBuffer,BytesRead,nil);

   Buffer[BytesRead]:= #0;

   OemToAnsi(Buffer,Buffer);

   AMemo.Text := AMemo.text + String(Buffer);

 

  Application.ProcessMessages;

  until (Apprunning <> WAIT_TIMEOUT);

end;

FreeMem(Buffer);

CloseHandle(ProcessInfo.hProcess);

CloseHandle(ProcessInfo.hThread);

CloseHandle(ReadPipe);

CloseHandle(WritePipe);

end;

Screen.Cursor:=CrDefault;

Form1.Button1.Enabled:=True;

end;

 

procedure TForm1.Button1Click(Sender: TObject);

begin

Memo1.Clear;

RunDosInMemo('ping -t 192.168.28.200',Memo1);

end;

 

Добавить комментарий

Не использовать не нормативную лексику.

Просьба писать ваши замечания, наблюдения и все остальное,
что поможет улучшить предоставляемую информацию на этом сайте.

ВСЕ КОММЕНТАРИИ МОДЕРИРУЮТСЯ ВРУЧНУЮ, ТАК ЧТО СПАМИТЬ БЕСПОЛЕЗНО!


Защитный код
Обновить