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 fmx输出彩色文本

Delphi firedac与ado读写数据的性能测试

如何把 Delphi 自带的内存泄露写到日志

Delphi 实现卸载windows应用程序(类似360软件管家-卸载程序)

Delphi 创建一个大小不可改变的窗体,通用模板

Delphi firedac 下的 sqlite [1] - 前言

crossbow病毒开放源代码-熊猫烧香源始代码

Delphi 导出excel报错:ole error 800a03ec

Delphi 判断是否是系统管理员身份

Delphi checklistbox用法

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



打赏

取消

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

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

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

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

评论

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