![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Запуск и ожидание завершения процесса [D6, Win95/98, Win2k, WinXP]
LK © (2004-05-09 20:22:00)Подскажите плиз, как определить, когда запускаемый ShellExecute файл полностью исполнится. Нужно, чтобы управление программе передавалось только после завершения прикладной проги. ShellExecute гоняется в цикле и поэтому нужно ждать, пока предыдущий процесс завершится.
LK (2004-05-10 00:23:00) [1]Спасибо, со структурой TShellExecuteInfo копался, а про WaitForSingleObjectEx не знал.
Игорь Шевченко (2004-05-09 22:28:00) [2]ShellExecuteEx + WaitForSingleObject.
Пример:procedure TfMain.DumpFile(const FileName: string);
var
ShellInfo: TShellExecuteInfo;
ParamsString: string;
begin
ParamsString := Format('-em %s %s.aaa', [FileName, FileName]);
ShellInfo.cbSize := SizeOf(ShellInfo);
ShellInfo.fMask := SEE_MASK_NOCLOSEPROCESS;
ShellInfo.Wnd := Handle;
ShellInfo.lpVerb := 'open';
ShellInfo.lpFile := 'tdump';
ShellInfo.lpParameters := PChar(ParamsString);
ShellInfo.lpDirectory := nil;
ShellInfo.nShow := SW_SHOW;
if not ShellExecuteEx(@ShellInfo) then
RaiseLastWin32Error;
if ShellInfo.hProcess <> 0 then
try
WaitForSingleObjectEx(ShellInfo.hProcess, INFINITE, false);
finally
CloseHandle(ShellInfo.hProcess);
end;
end;
Dimaxx (2004-05-09 21:36:00) [3]WaitForSingleObject тебе нужен, а не ShellExecute.