Главная страница
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.019 c
1-1206616923
rwolf
2008-03-27 14:22
2009.01.25
Посоветуйте ComboBox с уточнением выбора


1-1207398897
Kolan
2008-04-05 16:34
2009.01.25
TTrackBar без фокуса.


1-1205238747
IntruderLab
2008-03-11 15:32
2009.01.25
DLL немодальный вызов, MDI


2-1228923689
Djels
2008-12-10 18:41
2009.01.25
Turbo Pascal


1-1207222142
аноним
2008-04-03 15:29
2009.01.25
RemoteServer и ProgressBar на клиенте