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

Вниз

Как "оживить" прогу во время выполнения другого приложения   Найти похожие ветки 

 
Tornado ©   (2004-04-07 09:57) [0]

Запускаю на выполнение другое приложение с определенными параметрами из своей проги с помощью CreateProcess:


function CreatePr(Path_AdmProg,  Paramm: PChar): Boolean;
var
 si: STARTUPINFO;
 pi: PROCESS_INFORMATION;
begin
 ZeroMemory(@si,sizeof(si));
 si.cb:=SizeOf(si);
   if not CreateProcess(Path_AdmProg, { module name. }
          Paramm,                     { 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
     MessageBox(Application.Handle,PChar("Не могу запустить процесс!."),PChar("Error"),MB_ICONSTOP);
     Result := False;
     Exit;
 end;
     WaitForSingleObject( pi.hProcess, INFINITE );
     CloseHandle( pi.hProcess );
     CloseHandle( pi.hThread );
     Result := True;
end;


Во время работы запущенного приложения моя прога как бы подвисает, как только запущенное приложение заканчивает свою работу и закрывает окно моя прога снова "оживает". Вопрос как сделать так чтобы во время работы другого приложения можно было так же работать и с моей прогой? Пробовал вставить Application.ProcessMessages - не помогает...


 
Vlad ©   (2004-04-07 10:06) [1]


>      WaitForSingleObject( pi.hProcess, INFINITE );

Вот это не о чем не говорит ?


 
Tornado ©   (2004-04-07 10:13) [2]

>>> Vlad ©   (07.04.04 10:06) [1]

есть подозрение что тут надо изменить но как?


 
Developerr ©   (2004-04-07 10:17) [3]

А если ввобще убрать эту строку?


 
Bel ©   (2004-04-07 10:17) [4]

Убери вообще эту строчку.


 
Vlad ©   (2004-04-07 10:19) [5]


> Tornado ©   (07.04.04 10:13) [2]

Можно просто убрать. Но только если ты уверен что твоя программа будет работать корректно, не дождавшись завершения процесса.


 
Digitman ©   (2004-04-07 10:22) [6]


> Пробовал вставить


интересно, и куда "пробовал" ? тут и цикла-то нет ..

если тебе не требуется дожидаться , пока порожденный процесс завершит свою работу, просто убери Wait-ф-цию

если требуется ждать и одновременно реагировать на сообщения пользовательскому интерфейсу твоего приложения, используй MsgWaitForMultipleObjects()


 
Vitaly ©   (2004-04-07 10:23) [7]

while WaitForSingleObject( pi.hProcess, 300 ) = WAIT_TIMEOUT do
 application.processMessages;


 
Tornado ©   (2004-04-07 10:32) [8]

в том то и дело что после отработки внешнего приложения создается определенный файл который потом выводит моя прога в Memo...вообщем без этой строки не получается, будет ошибка потому что файла необходимого пока нет


 
Tornado ©   (2004-04-07 10:41) [9]

спасибо всем! получилось



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

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

Наверх




Память: 0.49 MB
Время: 0.022 c
1-1081164433
Stas
2004-04-05 15:27
2004.04.25
Помещение иконки в трей


6-1077882441
ALeX.B.
2004-02-27 14:47
2004.04.25
Как ускорить работу ICMP из ICS(KOL)?


1-1081330815
bhy
2004-04-07 13:40
2004.04.25
Как скрыть приложение с панели задач.


3-1080805412
LAndreyV
2004-04-01 11:43
2004.04.25
связка SELECT FROM WHERE ORDER BY выдает ошибку!


7-1077280399
L.evil
2004-02-20 15:33
2004.04.25
Подсветка