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

Вниз

Не работает Create Process   Найти похожие ветки 

 
strong   (2001-09-27 11:17) [0]

Всем привет!
Пытаюсь запустить Setup написанный на Install Sheld из своей программы и дождаться окончания установки. Делаю так:
procedure TForm1.Button1Click(Sender: TObject);
var
si: TStartupInfo;
p: TProcessInformation;
begin
FillChar(Si,SizeOf(Si),0);
with Si do begin
cb := SizeOf( Si);
dwFlags := STARTF_USESHOWWINDOW;
wShowWindow := 4;
end;
Form1.WindowState:=wsMinimized;
Createprocess(nil,"c:\пример запуска\setup.exe",nil,nil,false,CREATE_DEFAULT_ERROR_MODE,nil,nil,si,p);
Waitforsingleobject(p.hProcess,infinite);
Form1.WindowState:=wsNormal;
end;
Но программа виснет и ничего не происходит! Если убрать ожидание, то все работает. В чем дело?


 
Digitman ©   (2001-09-27 11:25) [1]

что возвращает Createprocess() ?
чему равен p.hProcess при вызове Waitforsingleobject() ?
Вызываемый процесс - длительный ?


 
strong   (2001-09-27 12:27) [2]

Вызываемый процесс длинный - это инсталляция.
p.hprocess содержит 20.
Пока ожидание не прошло,ничего не запускается.


 
Digitman ©   (2001-09-27 12:39) [3]

Что возвращает Createprocess() ? True или False ?
Инсталляционный процесс реально запускается или нет ?
Если запускается, то - что же ты хочешь ? Waitforsingleobject() будет ждать завершения вызванного инсталляционного процесса столько, сколько он будет продолжаться, вплоть до его завершения (если он вообще завершается у тебя ?). И лишь после этого твоя задача продолжит выполнение со строчки, следующей за Waitforsingleobject() - на то он и Wait !


 
strong   (2001-09-27 13:07) [4]

В том то и дело, что ничего подобного!
Если я ставлю ожидание Waitforsingleobject(infinite), то инсталляция не запускается (это то приложение, которое я собираюсь запустить). А если ставлю напримет Waitforsingleobject(1000), то инсталляция запускается, но только после ожидания, а должна запускаться до него.

Сама create Process выдает вроде Tryue.


 
Digitman ©   (2001-09-27 13:27) [5]

Ну вот этого, IMHO, не может быть) ...
При "зависании" на Waitforsingleobject(infinite) открой список задач (ALT-CTRL-DEL) и посмотри : процесс, вызванный к выполнению по CreateProcess() должен быть в списке. То, что ты не видишь его визуальные проявления, еще не говорит о том, что он не запущен.


 
strong   (2001-09-27 14:04) [6]

А вот и может.
Самое интересное, что в списке появляется не Setup.exe, который я вызываю, а какой-то is_set.exe
Короче, я думаю, что сам setup вызывает еще кучу процессов, может в этом все дело?


 
strong   (2001-09-27 15:33) [7]

Ну так что Мастера, есть решения?


 
Digitman ©   (2001-09-28 08:47) [8]

появление is_set.exe в списке как раз и говорит о том, что CreateProcess() отрабатывает, и это - ответ на твой вопрос. Остальное же сильно зависит от того, что делается в инсталляторе и твоем приложении - они могут и зависеть друг от друга


 
AnnaBal   (2001-11-08 19:04) [9]

Analogichnaja problema. Prichem trebujushaja srochnogo rasreshenija.
Mne nujno zapustit installator JDK, potom popravit koe chto v reestre i eshe odnu programku zapustit. JDK nachimaet rabotat, raspakovywaet svoi faily i ostaetsya viset v spiske sadach, ne rabotaja dalshe. moja programma gluho visnet. Bez Waitforsingleobject rabotaet normalno, no mne to nujno posledovatelno i ostalnoe otrabatyvat.
Pomogite kto znaet, ochen nujno.


 
Юрий Зотов ©   (2001-11-09 11:23) [10]

Этот вопрос уже обсуждался. Как выяснилось, проблема - в особенностях инсталляторов, которые создает InstallShield. Чтобы Setup нормально стартовал, не используйте INFINITE, а сделайте, например, так:

while WaitForSingleObject(p.hProcess, 300) = WAIT_TIMEOUT do;

Такой цикл тоже не загружает CPU (вернее, почти не загружает), тоже ожидает завершения процесса, но из ожидания периодически выходит - благодаря чему и удается разблокировать клинч.



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

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

Наверх




Память: 0.49 MB
Время: 0.008 c
1-28486
Telemax
2001-12-22 10:56
2002.01.10
Копирование форм.


3-28435
AlexNord
2001-12-10 06:08
2002.01.10
BatchMove


1-28475
Starkom
2001-12-17 12:30
2002.01.10
Вопрос о существовании сборщика мусора


6-28518
Sregey
2001-10-17 14:13
2002.01.10
О ServerWinSocket


6-28515
Woolen
2001-10-13 09:52
2002.01.10
Определение URL