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;

相关阅读 >>

Delphi动态复选框源码

Delphi image 等比例缩小

Delphi之声音资源(*.res)的编译方法

Delphi 取相同字符串 2种方法

Delphi setcursorpos函数在窗口上定位鼠标坐标

Delphi 判断tcp端口是否被占用的方法

Delphi替换字符串中的单引号

Delphi 已经最小化的窗体如何让它自己还原?

Delphi 检测用户超过多长时间没有操作键盘或鼠标

Delphi unknown picture file extension (.jpg) 错误提示

更多相关阅读请进入《Delphi》频道 >>



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...