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

 

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;

 

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

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

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

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


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