我使用 ShellExecute(handle,'open','c:\myapp\a.cmd','-s','',SW_SHOWNORMAL); 来调用a.cmd
现在我要在a.cmd运行结束之后显示一个message
如何才能判断a.cmd已经运行结束了呢?

解决方案 »

  1.   

    用这个函数取代你的ShellExxcute
    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;
      

  2.   

    例如:
    WinExecExW('CMD.exe /c c:\myapp\a.cmd','c:\',SW_Hide);