- 人气:
- 放大
- 缩小
- 二维码
- 赞赏
delphi 使用ShellExecuteEx运行应用程序并等待完成
uses Winapi.ShellAPI;
{ Runs application using ShellExecuteEx and waits for completion. }
function ShellExecuteAndWait(FileName: String; Params: String): Boolean;
var
exInfo: TShellExecuteInfo;
Ph: DWORD;
begin
FillChar(exInfo, SizeOf(exInfo), 0);
with exInfo do
begin
cbSize := SizeOf(exInfo);
fMask := SEE_MASK_NOCLOSEPROCESS or SEE_MASK_FLAG_DDEWAIT;
Wnd := GetActiveWindow();
exInfo.lpVerb := 'open';
exInfo.lpParameters := PChar(Params);
lpFile := PChar(FileName);
nShow := SW_SHOWNORMAL;
end;
if ShellExecuteEx(@exInfo) then
Ph := exInfo.hProcess
else
begin
ShowMessage(SysErrorMessage(GetLastError));
Result := true;
exit;
end;
while WaitForSingleObject(exInfo.hProcess, 50) <> WAIT_OBJECT_0 do
Application.ProcessMessages;
CloseHandle(Ph);
Result := true;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
ShellExecuteAndWait('regedit.exe','');
end;