delphi 調用外部exe ,並等待調用程序運行結束


function TFmain.RunWait(FileName: string; Visibility: Integer): THandle;
var
  zAppName: array[0..512] of Char;
  zCurDir: array[0..255] of Char;
  WorkDir: string;
  StartupInfo: TStartupInfo;
  ProcessInfo: TProcessInformation;
begin
  try
        StrPCopy(zAppName, FileName);
        GetDir(0, WorkDir);
             StrPCopy(zCurDir, WorkDir);
             FillChar(StartupInfo, SizeOf(StartupInfo), #0);
             StartupInfo.cb := SizeOf(StartupInfo);
             StartupInfo.dwFlags := STARTF_USESHOWWINDOW;
             StartupInfo.wShowWindow := Visibility;
            if not CreateProcess(nil, zAppName, nil, nil, false, Create_NEW_CONSOLE or NORMAL_PRIORITY_CLASS, nil, nil, StartupInfo, ProcessInfo) then
            begin
                result := 0;
                Exit;
             end
             else
             begin
      WaitForSingleObject(ProcessInfo.hProcess, INFINITE);
      GetExitCodeProcess(ProcessInfo.hProcess, result);
        end;
    finally
    end;
end;

調用

procedure TFmain.Img_buyClick(Sender: TObject);
var
msg:String;
begin

    Timer1.Enabled := False;

    RunWait('cs_buy.exe',SW_SHOWMAXIMIZED);

    Timer1.Enabled := True;

end;

 

其中 參數   Visibility 取值如下:


行號 參數 含義
1 SW_HIDE                        隱藏這個窗體,並激活其他窗體。
2 SW_MAXIMIZE                最大化指定的窗體。
3 SW_MINIMIZE                 最小化指定的窗體,並按順序激活最上層的窗體。
4 SW_RESTORE               激活並顯示窗體。如果窗體為最小化或者最大化,窗體恢復到原始大
                                          小和置。應用程序當恢復一個最小化的窗體時將指定標記。
5 SW_SHOW                      以當前的大小和位置激活並顯示窗體。
6 SW_SHOWDEFAULT
7 SW_SHOWMAXIMIZED    激活並最大化顯示窗體。
8 SW_SHOWMINIMIZED     激活並最小化現實窗體。
9 SW_SHOWMINNOACTIVE    最小化窗體,保持其激活狀態。
10 SW_SHOWNA                     以當前狀態顯示窗體,保持其激活狀態。
11 SW_SHOWNOACTIVATE   以當前的大小和位置顯示窗體,並保持其激活狀態。
12 SW_SHOWNORMAL 激活並顯示一個窗體。如果窗體為最大化或者最小化,窗體恢復到原始的大小和位置。當窗體第一次顯示的時候,應用程序記錄標記


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM