Я пытаюсь запустить внешнее приложение с повышенным статусом и подождать, пока оно не завершится, прежде чем продолжить:
var
FProcess: THandle;
ExecInfo: TShellExecuteInfo;
begin
FillChar(ExecInfo, SizeOf(ExecInfo), 0);
with ExecInfo do
begin
cbSize := SizeOf(ExecInfo);
fMask := 0;
Wnd := AWindow;
lpVerb := 'runas';
lpFile := PChar(APath);
lpParameters := PChar(AParams);
lpDirectory := PChar(AWorkDir);
nShow := SW_NORMAL;
end;
Result := ShellExecuteEx(@ExecInfo);
if Wait then
begin
while WaitForSingleObject(ExecInfo.hProcess, INFINITE) <> WAIT_TIMEOUT do
Application.ProcessMessages;
end;
Это запускается, но продолжает ждать. Вызывающая программа никогда не продолжается дальше вызов WaitForSingleObject даже после выхода вызываемой программы.
Я пробовал WAIT_OBJECT_0 вместо WAIT_TIMEOUT, но у меня та же проблема. Что я здесь делаю не так?