以下我的代码:  //执行一个BAT文件,Windows会弹出一个DOS窗口来执行
  WinExec(Pchar(ExtractFilePath(Paramstr(0))+ 'ImpDmp.Bat'),1);  //等待WINDOWS DOS窗口执行完成命令后,会自动关闭,可是我如何捕捉DOS窗口关闭呢?
   CopyToHistory();//DOS窗口关闭后,执行函数!!!

解决方案 »

  1.   

    给你一个函数对你肯定有用。用以下函数替换你的Winexec,该函数将一直等待被运行的内容,直到被运行的内容退出后才退出函数。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;