在vc中(exe文件)调用外部的exe程序(可能有界面、也可能没有界面),判断被调用的外部程序已彻底运行结束可以用CreateProcess、WaitForSingleObject()来实现,那么在Delphi中如何实现呢?

解决方案 »

  1.   

    也用CreateProcess、WaitForSingleObject()来实现 :)
      

  2.   

    用CreateProcess、WaitForSingleObject()
      

  3.   

    抄别人的。
    function WinExecExW(CMD, WorkDir : Pchar; Visiable: integer) : DWORD;
    var
      StartupInfo : TStartupInfo;
      ProcessInfo : TProcessInformation;
    begin
      //执行一个外部程序并等待其执行结束
      FillChar(StartupInfo,SizeOf(StartupInfo),#0);
      StartupInfo.cb := SizeOf(StartupInfo);
      StartupInfo.dwFlags := STARTF_USESHOWWINDOW;
      StartupInfo.wShowWindow := Visiable;
      if not CreateProcess(nil,
                           cmd,
                           nil,
                           nil,
                           false,
                           Create_new_console or Normal_priority_class,
                           nil,
                           WorkDir,
                           StartupInfo,
                           ProcessInfo) then
        result:=0
      else
      begin
         WaitForSingleObject(Processinfo.hProcess, INFINITE);
         GetExitCodeProcess(ProcessInfo.hProcess, Result);
      end;
    end;