Недавно добавленные исходники

•  Animation Loaders  861

•  DeLiKaTeS Tetris (Тетрис)  5 808

•  TDictionary Custom Sort  7 766

•  Fast Watermark Sources  7 441

•  3D Designer  10 669

•  Sik Screen Capture  7 989

•  Patch Maker  8 196

•  Айболит (remote control)  8 249

•  ListBox Drag & Drop  7 058

•  Доска для игры Реверси  100 559

•  Графические эффекты  8 321

•  Рисование по маске  7 698

•  Перетаскивание изображений  6 302

•  Canvas Drawing  6 675

•  Рисование Луны  6 601

•  Поворот изображения  5 745

•  Рисование стержней  4 684

•  Paint on Shape  3 385

•  Генератор кроссвордов  4 364

•  Головоломка Paletto  3 511

•  Теорема Монжа об окружностях  4 323

•  Пазл Numbrix  2 795

•  Заборы и коммивояжеры  3 738

•  Игра HIP  2 515

•  Игра Go (Го)  2 513

•  Симулятор лифта  2 910

•  Программа укладки плитки  2 336

•  Генератор лабиринта  3 076

•  Проверка числового ввода  2 570

•  HEX View  2 975

 
скрыть

  Форум  

Delphi FAQ - Часто задаваемые вопросы

| Базы данных | Графика и Игры | Интернет и Сети | Компоненты и Классы | Мультимедиа |
| ОС и Железо | Программа и Интерфейс | Рабочий стол | Синтаксис | Технологии | Файловая система |



Delphi Sources

Как вывести результат работы консоли в Memo



Автор: Song
WEB-сайт: http://www.torry.net

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;




Похожие по теме исходники

Примеры работы с БД

График работы

Memory Manager

Shared Memory

 

Numbers Memory

xIPMemo

Memo Edit Errors Messages

Memory Monitor

 

Memory Using in System

Simple Memory Seeker

Process Memory Map




Copyright © 2004-2026 "Delphi Sources" by «SiteAnalyzer». Delphi World FAQ

Группа ВКонтакте