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

Вниз

Запуск внешней проги   Найти похожие ветки 

 
Амир   (2004-02-07 10:17) [0]

Как запустить прогу и подождать пок аона завершится?


 
Alexander666 ©   (2004-02-07 10:27) [1]

Он довольно популярно растолкован в каждом делфийском факе в Инете.


 
}{enon ©   (2004-02-07 10:29) [2]

Результат функции ShellExecute - это handle проги. Запускаешь ее, а потом ждешь, пока такое приложении перестанет существовать (IsWindow). Правда может не сработать с DOS-приложениями.


 
Alexander666 ©   (2004-02-07 10:38) [3]

Нуно CreateProcess и WaitForInputIdle.


 
akvilon ©   (2004-02-07 15:27) [4]

Не WaitForInputIdle, а скорее WaitForSingleObject


 
akvilon ©   (2004-02-07 15:27) [5]

Не WaitForInputIdle, а скорее WaitForSingleObject


 
Nomolos ©   (2004-02-07 20:17) [6]

А лучше почитать библию дяди Рихтера. Он расскажет не только как, но и почему :)


 
Амир   (2004-02-08 11:35) [7]

Ну поюзал я CreateProcess (в Faq пример быд). А вот как перехватить данные которые он пихает, то есть я запускаю коснольную прогу, и она все выводит в косноль, как можно это получить проге?


 
димка   (2004-02-08 17:22) [8]

function ExecuteFileTm(FileName:string):boolean;
var  
 Res:LongBool;
 PIn:PROCESS_INFORMATION;
 params:string;
 SII:STARTUPINFO;
 RetCode:cardinal;
 CreationsFlags:cardinal;
begin
params:="";
 try
   CreationsFlags:=CREATE_DEFAULT_ERROR_MODE or normal_PRIORITY_CLASS
                     or CREATE_UNICODE_ENVIRONMENT;
                      //CreationsFlags:=CREATE_DEFAULT_ERROR_MODE or CREATE_NO_WINDOW
       //              or NORMAL_PRIORITY_CLASS
         //            or CREATE_UNICODE_ENVIRONMENT;

   getstartupinfo(SII);      
   Res:=createprocess(
     pchar(FileName),
     pchar(Params),
     nil,
     nil,
     True,
     CreationsFlags,
     nil,
     pchar(extractfilepath(FileName)),
     SII,
     PIn);
 except
   CloseHandle(Pin.hProcess);  
   ExecuteFileTm:=False;
   exit;
 end;
 if not Res then
 begin
   CloseHandle(Pin.hProcess);  
   ExecuteFileTm:=False;
   exit;
 end;
 RetCode:=STILL_ACTIVE;
 while (RetCode=STILL_ACTIVE)do
 begin
   try
     GetExitCodeProcess(Pin.hProcess,RetCode);
   except
     CloseHandle(Pin.hProcess);
     ExecuteFileTm:=False;
     exit;
   end;
   Sleep(10);
 end;
 CloseHandle(Pin.hProcess);
 ExecuteFileTm:=True;    
end;


 
Амир   (2004-02-08 18:26) [9]

И что это было? Если запуск, то я чуть проще сделал, а вот как перехватить данные из консольки?
Вот как я сделал:
procedure Run(cmdline:String);
var si:STARTUPINFO;
   pi:PROCESS_INFORMATION;
begin
   ZeroMemory(@si,sizeof(si));
   si.cb:=SizeOf(si);
   si.wShowWindow:=SW_HIDE;
   si.dwFlags:=STARTF_USESHOWWINDOW;
   if not CreateProcess( nil, // No module name (use command line).
       PChar(cmdline),  // Command line.
       nil,             // Process handle not inheritable.
       nil,             // Thread handle not inheritable.
       False,           // Set handle inheritance to FALSE.
       0,               // No creation flags.
       nil,             // Use parent"s environment block.
       nil,             // Use parent"s starting directory.
       si,              // Pointer to STARTUPINFO structure.
       pi )             // Pointer to PROCESS_INFORMATION structure.
      then
       begin
        ShowMessage( "blitzcc not found" );
        Exit;
       end;
   while WaitForSingleObject(pi.hProcess,100)=WAIT_TIMEOUT do
    begin
    Application.ProcessMessages;
    end;
   CloseHandle( pi.hProcess );
   CloseHandle( pi.hThread );
//    ShowMessage("Done !");
end;



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

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

Наверх




Память: 0.49 MB
Время: 0.066 c
1-1080732957
Borealis
2004-03-31 15:35
2004.04.18
MDIChild в DLL


1-1080382936
YT
2004-03-27 13:22
2004.04.18
Смена функциональности при нажатой клавише


3-1080067163
zeratul_pr
2004-03-23 21:39
2004.04.18
*.mdb ошибка!!!


1-1080559054
Yurko
2004-03-29 15:17
2004.04.18
Убрать 3D рамку


1-1080712831
V-Isa
2004-03-31 10:00
2004.04.18
Компонент