[delphi]調用外部程序並等待其運行結束

function 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;


其中 參數   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 激活並顯示一個窗體。如果窗體爲最大化或者最小化,窗體恢復到原始的大小和位置。當窗體第一次顯示的時候,應用程序記錄標記。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章