Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Delphi - [решено] CreateProcess и WaitForSingleObject

Ответить
Настройки темы
Delphi - [решено] CreateProcess и WaitForSingleObject

Новый участник


Сообщения: 42
Благодарности: 2


Конфигурация

Профиль | Отправить PM | Цитировать


Помогите пожалуйста, не понятка каято
запускаю инсталятор програмы с помощью CreateProcess и дожидаюсь с помощью WaitForSingleObject
Код: Выделить весь код
procedure TForm1.Button2Click(Sender: TObject);  
var    si: TStartupInfo;    pi: TProcessInformation; 
 begin   
ZeroMemory(@si,sizeof(si));  
si.cb := SizeOf(si);     
CreateProcess('H:\Install\Face\ChangeLogonSetup.exe', nil ,nil,                                        
                                                      nil,false, 0, nil,nil,si,pi);     
CloseHandle(pi.hThread);     
WaitForSingleObject(pi.hProcess, INFINITE);  
CloseHandle(pi.hProcess);   
end.
програма запускается нормально. Но в конце установки она регистрирует шрифты в реестре и на етом замирает
Вырубаю Project1.exe в диспетчере задач - шрифты тут же зарегистрировались, все конец установки.
Пробовал прописовать без WaitForSingleObject - все OK.
Пробовал путь писать в параметр Name потом commandline безразницы.
Ятак понимаю WaitForSingleObject не дает поге зарегать шрифты вот она и зависает.
Что можно сделать?

Отправлено: 16:42, 10-02-2012

 

Аватара для ferget

Разный


Сообщения: 1294
Благодарности: 359

Профиль | Отправить PM | Цитировать


попробуйте так

Код: Выделить весь код
WaitForSingleObject(pi.hProcess, INFINITE);  
CloseHandle(pi.hThread);     
CloseHandle(pi.hProcess);

Отправлено: 16:58, 10-02-2012 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Новый участник


Сообщения: 42
Благодарности: 2

Профиль | Отправить PM | Цитировать


Цитата ferget:
попробуйте так
Код:
WaitForSingleObject(pi.hProcess, INFINITE);
CloseHandle(pi.hThread);
CloseHandle(pi.hProcess); »
Я так с самого начала пробовал - не получается тоже. на одном сайте вычитал что лишний handle можно закрыть потому так и написал.

Отправлено: 14:27, 11-02-2012 | #3


Аватара для ferget

Разный


Сообщения: 1294
Благодарности: 359

Профиль | Отправить PM | Цитировать


можно убрать WaitForSingleObject, сделать функцию которая проверяет, что процесс уже завершился и затем CloseHandle

или посмотреть в отладчике, что происходит когда программа регистрирует шрифты в реестре и разобраться почему это мешает WaitForSingleObject
Это сообщение посчитали полезным следующие участники:

Отправлено: 17:58, 11-02-2012 | #4


Новый участник


Сообщения: 42
Благодарности: 2

Профиль | Отправить PM | Цитировать


вопшем WaitForSingleObject какимто образо не дает програме установится полностю. Запускал через кучу дочерних процнсов но результат один - не хотат регистрироватся шришты.
Цитата ferget:
можно убрать WaitForSingleObject, сделать функцию которая проверяет, что процесс уже завершился и затем CloseHandle »
Вот пошарил в нете и немного переделал, мож кому пригодится
это
Код: Выделить весь код
var
  ....
  ExitCode: Cardinal;
begin
    ...
    while (GetExitCodeProcess(PI.hProcess, ExitCode)) and  (ExitCode = STILL_ACTIVE) do
      begin
      Application.ProcessMessages;
      Sleep(1);
     end;
тема решена, но все же осталось много вопросов???
Это сообщение посчитали полезным следующие участники:

Отправлено: 23:56, 15-02-2012 | #5



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Delphi - [решено] CreateProcess и WaitForSingleObject

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Delphi - WaitForSingleObject в Delphi 2009 Malfatto Программирование и базы данных 1 03-12-2008 03:30




 
Переход