Главная страница
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.024 c
14-1080132427
Dmitriy O.
2004-03-24 15:47
2004.04.18
Во я крут !


3-1079976637
RDA
2004-03-22 20:30
2004.04.18
Tdbf - проблемы с украинской буквой "і"


3-1079678179
Max1
2004-03-19 09:36
2004.04.18
Запустить макрос


7-1076331450
Chery
2004-02-09 15:57
2004.04.18
Как узнать имя лок. диска и метку с кот. запускается приложение?


14-1080137925
Дремучий
2004-03-24 17:18
2004.04.18
Есть указатель на буфер