Главная страница
    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.031 c
4-1076492231
BALU1111
2004-02-11 12:37
2004.04.18
DLL


3-1079615388
Лысый
2004-03-18 16:09
2004.04.18
ADOConnection


6-1076183970
sadretro
2004-02-07 22:59
2004.04.18
как проверить все IP адресса в локалке .


1-1080409054
Vilux
2004-03-27 20:37
2004.04.18
Windows XP Theme Manager


14-1080356133
Тумар
2004-03-27 05:55
2004.04.18
Извените (я только учусь) и хотя нам уже читали лекции про Инет





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