Форум: "WinAPI";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.01.10;
Скачать: [xml.tar.bz2];




Вниз

Не работает 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 (вернее, почти не загружает), тоже ожидает завершения процесса, но из ожидания периодически выходит - благодаря чему и удается разблокировать клинч.




Форум: "WinAPI";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.01.10;
Скачать: [xml.tar.bz2];




Наверх





Память: 0.73 MB
Время: 0.076 c
1-28483           SL                    2001-12-22 14:17  2002.01.10  
Можно ли в ComboBox ширину выпадающего окна сделать больше ширины окна редактирования


1-28493           vbazik                2001-12-21 13:16  2002.01.10  
Помогите с графикой, please :-(


3-28406           vinni2000             2001-12-07 15:38  2002.01.10  
И чего это он ругаеться?


14-28530          Sir Alex              2001-11-12 19:37  2002.01.10  
клиент DMFC & Sources & CVS


3-28416           Atrem                 2001-11-30 19:35  2002.01.10  
BLOB поля