![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
ShellExecute - ожидание завершения.
Новичек © (2007-05-16 07:08:00)Уважаемые Мастера, посоветуйте, пожалуйста, как определить, что функция ShellExecute с параметром SW_HIDE завершила свою работу?
Спасибо.
Новичек (2007-05-16 09:21:00) [1]Необходимые структуры я заполнял.
Поэкспериментировал с параметрами, заработало вот с такими:
Proga := CreateProcess(nil, 'Proga.exe extended', nil, nil, false, NORMAL_PRIORITY_CLASS, nil, nil, StartUpInfo, ProcessInfo);
Спасибо огромное, Мастера.
С уважением, Сергей.
Джо (2007-05-16 09:05:00) [2]> [5] Новичек © (16.05.07 08:29)
> Делаю так:
> CreateProcess('proga.exe', 'extended', nil, nil, false,
> NORMAL_PRIORITY_CLASS, nil, nil, StartUpInfo, ProcessInfo)
> Что-то уж больно быстро завершается, практически мгновенно
1. Структура StartUpInfo должна быть инициализированы должным образом. В коде этого не видно.
2. Функция CreateProcess НЕ ожидает завершения процесса. Вместо этого нужно использовать WaitForSingleObject и передавать ей хендл ново-созданного процесса.
3. Вызывая функции, следует проверять возвращаемое ими значение.
В данном случае, схематично будет выглядеть так:
var
StartUpInfo: TStartupInfo;
ProcessInfo: TProcessInformation;
...
ZeroMemory(@StartUpInfo,Sizeof(StartUpInfo));
StartUpInfo.cb := Sizeof(StartUpInfo);
if not CreateProcess (..., StartUpInfo, ProcessInfo) then
raise LastOSError;
WaitForSingleObject(ProcessInfo.hProcess,INFINITE);
В таком роде.
MBo (2007-05-16 09:00:00) [3]поля StartUpInfo, ProcessInfo заполнил? Пример есть в FAQ
всю командную строку можно вторым параметром передавать.
Новичек (2007-05-16 08:29:00) [4]2 MBo:
Делаю так:
CreateProcess('proga.exe', 'extended', nil, nil, false, NORMAL_PRIORITY_CLASS, nil, nil, StartUpInfo, ProcessInfo);
Что-то уж больно быстро завершается, практически мгновенно :-)
Нормальная продолжительность выполнения - секунд 20.
MBo (2007-05-16 08:18:00) [5]>Не знаю, как использовать её с дополнительными параметрами в командной строке (типа 'proga.exe extended parameter')
хм, не вижу проблем
Новичек (2007-05-16 07:57:00) [6]2 MBo:
Не знаю, как использовать её с дополнительными параметрами в командной строке (типа 'proga.exe extended parameter') :-(
2 PZ:
Спасибо, про эту библиотеку я и не вспомнил.
PZ (2007-05-16 07:47:00) [7]Можно, также, использовать функцию FileExecuteWaitиз библиотеки RxLib
MBo (2007-05-16 07:21:00) [8]CreateProcess используй