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

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.05 c
7-1077734298
Никола
2004-02-25 21:38
2004.04.25
Post Script


1-1081263465
}|{yk
2004-04-06 18:57
2004.04.25
Потоки - где ошибка?


1-1081195974
Vit
2004-04-06 00:12
2004.04.25
TiniFile


1-1081355432
Distortion
2004-04-07 20:30
2004.04.25
Как в TMainMenu поставить разделитель?


1-1081177958
Dzhon
2004-04-05 19:12
2004.04.25
Как в RunTime получить список всех свойств компонента?





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