Delphi 执行程序并等待完成2


本文整理自网络,侵删。

 

function ExecAndWait(sExe, sCommandLine: string): Boolean;
var
  dwExitCode: DWORD;
  tpiProcess: TProcessInformation;
  tsiStartup: TStartupInfo;

begin
  Result := False;
  FillChar(tsiStartup, SizeOf(TStartupInfo), 0);
  tsiStartup.cb := SizeOf(TStartupInfo);
  if CreateProcess(PChar(sExe), PChar(sCommandLine), nil, nil, False, 0, nil, nil, tsiStartup, tpiProcess) then
  begin
    if WAIT_OBJECT_0 = WaitForSingleObject(tpiProcess.hProcess, INFINITE) then
    begin
      if GetExitCodeProcess(tpiProcess.hProcess, dwExitCode) then
      begin
        if dwExitCode = 0 then
          Result := True
        else
          SetLastError(dwExitCode + $2000);
      end;
    end;
    dwExitCode := GetLastError;
    CloseHandle(tpiProcess.hProcess);
    CloseHandle(tpiProcess.hThread);
    SetLastError(dwExitCode);
  end;
end;


procedure TForm2.Button1Click(Sender: TObject);

begin
ExecAndWait('123.exe','');
end;

相关阅读 >>

Delphi 获取计算机名称 函数

Delphi 两种登录界面验证写法

Delphi 获取网卡mac代码可用2020.01.22

sendmessage这个函数有很多奇妙的用法

Delphi 实现php的urlencode编码效果

Delphi android实例-读取设备联系人(xe8+小米2)

Delphi 如何把类中的方法做参数

Delphi listview中加载图片

Delphi android 启动卡死处理方法

Delphi完美的线程注入和卸载

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



打赏

取消

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

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

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

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

评论

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