Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2004.04.18;
Скачать: [xml.tar.bz2];

Вниз

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

 
Амир   (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 вся ветка

Форум: "WinAPI";
Текущий архив: 2004.04.18;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.074 c
6-1076701830
Gefest
2004-02-13 22:50
2004.04.18
Подсчет трафика!


6-1076900173
Alek Aaz
2004-02-16 05:56
2004.04.18
DNS кэш


8-1071501250
kopcap
2003-12-15 18:14
2004.04.18
Перерисовка кадров


14-1079762597
Alex Konshin
2004-03-20 09:03
2004.04.18
Купил новую машину


4-1076335924
VKSam
2004-02-09 17:12
2004.04.18
ToolBar





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский