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

Вниз

Зауск DOS приложения в фрейме своей программы   Найти похожие ветки 

 
Николай1984   (2008-03-04 10:21) [0]

Уважаемые Мастера, подскажите пожалуйста каким образом можно заустить DOS приложения в фрейме своей программы
Например как это делает Console 2.0 от nMarko Bozikovic.


 
Dimaxx ©   (2008-03-04 10:44) [1]

Запустить его через CreateProcess и перенаправить консоль на Мемо...


 
Palladin ©   (2008-03-04 11:52) [2]

Procedure NaprimerKakEtoDelaetConsole20otnMarkoBozikovic(Const App:String;AMemo:TMemo);
Const
 ReadBuffer = 2400;
Var
 Security            : TSecurityAttributes;
 ReadPipe,WritePipe  : THandle;
 start               : TStartUpInfo;
 ProcessInfo         : TProcessInformation;
 Buffer              : PChar;
 BytesRead           : DWord;
 Apprunning          : DWord;

Begin
 AMemo.Lines.Add("");
 Security.nLength:=SizeOf(TSecurityAttributes);
 Security.bInheritHandle:=True;
 Security.lpSecurityDescriptor:=Nil;

 If Createpipe(ReadPipe,WritePipe,@Security,0) Then
  Begin
   GetMem(Buffer,ReadBuffer+1);
   ZeroMemory(@Start,Sizeof(Start));
   start.cb          :=SizeOf(start);
   start.hStdOutput  :=WritePipe;
   start.hStdInput   :=ReadPipe;
   start.dwFlags     :=STARTF_USESTDHANDLES+STARTF_USESHOWWINDOW;
   start.wShowWindow :=SW_HIDE;

   If CreateProcess(nil,PChar(App),@Security,@Security,True,NORMAL_PRIORITY_CLASS,Nil, PChar(vtvTempPath+"$DS2\"),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;



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

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

Наверх




Память: 0.47 MB
Время: 0.016 c
1-1207176526
Дмитрий Белькевич
2008-04-03 02:48
2009.01.25
Как собирать экзешники с разными иконками?


15-1227708896
Поросенок Винни-Пух
2008-11-26 17:14
2009.01.25
Богатства сомали


2-1229332728
Андрей Ал.
2008-12-15 12:18
2009.01.25
Обновление данных


1-1207310024
TStas
2008-04-04 15:53
2009.01.25
Как добавить в ActionList Action?


2-1228997565
palpalich
2008-12-11 15:12
2009.01.25
Стеки и очереди в Turbo Pascal 7.0