Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.10.19;
Скачать: CL | DM;

Вниз

Запустить приложение и считать информацию   Найти похожие ветки 

 
Виталион   (2008-09-14 18:15) [0]

Мне нужно запустить из своей программы консольное приложение с определенными ключами и после запуска считать "лог приложения" (при запуске приложения из cmd в итоге в консоль выводиться информация).

Как этот ответ прочитать?


 
Palladin ©   (2008-09-14 18:19) [1]

procedure RunDosInMemo(DosApp:String;AMemo:TMemo);
const
   ReadBuffer = 2400;
var
 Security            : TSecurityAttributes;
 ReadPipe,WritePipe  : THandle;
 start               : TStartUpInfo;
 ProcessInfo         : TProcessInformation;
 Buffer              : Pchar;
 BytesRead           : DWord;
 Apprunning          : DWord;
begin
 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(DosApp),
         @Security,
         @Security,
         true,
         NORMAL_PRIORITY_CLASS,
         nil,
         nil,
         start,
         ProcessInfo)
  then
  begin
   repeat
    Apprunning := WaitForSingleObject
                 (ProcessInfo.hProcess,100);
    Application.ProcessMessages;
   until (Apprunning <> WAIT_TIMEOUT);
    Repeat
      BytesRead := 0;
      ReadFile(ReadPipe,Buffer[0],
              ReadBuffer,BytesRead,nil);
      Buffer[BytesRead]:= #0;
      OemToAnsi(Buffer,Buffer);
      AMemo.Text := AMemo.text + String(Buffer);
    until (BytesRead < ReadBuffer);
 end;
 FreeMem(Buffer);
 CloseHandle(ProcessInfo.hProcess);
 CloseHandle(ProcessInfo.hThread);
 CloseHandle(ReadPipe);
 CloseHandle(WritePipe);
 end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
 Memo1.Clear;
 RunDosInMemo("route print",Memo1);
end;



Страницы: 1 вся ветка

Текущий архив: 2008.10.19;
Скачать: CL | DM;

Наверх




Память: 0.45 MB
Время: 0.006 c
2-1221136125
DJones
2008-09-11 16:28
2008.10.19
Использование многострочных hint в Дельфи


2-1221213675
interandry
2008-09-12 14:01
2008.10.19
MDI окна


15-1219931556
Vlad Oshin
2008-08-28 17:52
2008.10.19
Инструкции сопроцессора. FWAIT Ожидание. Тест(мой)


15-1219815088
Bob
2008-08-27 09:31
2008.10.19
Фокус на АСМе в Дельфи


1-1200667886
Adm
2008-01-18 17:51
2008.10.19
Потоки команд





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский