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;

相关阅读 >>

Delphi2010 关于record类型rtti反射的用途和方法

Delphi-获取毫秒-计算代码运行的时间

Delphi xe7中stringgrid组件的使用

Delphi提取字符串

Delphi获取各种编码的识别符

Delphi中实现控件的拖拽

Delphi 2009 泛型容器单元(generics.collections)[2]: tqueue<t>

Delphi dbgrids 组件内实现查询

Delphi 农历源码

Delphi escape/unescape编码

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



打赏

取消

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

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

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

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

评论

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