欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

Delphi 调用外部程序并等待其运行结束

发布时间:2025/6/17 编程问答 48 豆豆
生活随笔 收集整理的这篇文章主要介绍了 Delphi 调用外部程序并等待其运行结束 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

 如何让Delphi调用外部程序并等待其运行结束

函数一:

uses Windows, SysUtils, Classes, ShellAPI; function RunAndWait(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; 


函数二:

function WinExecAndWait32(FileName: string; Visibility: Boolean): integer; var zAppName: array[0..512] of char; //存放应用程序名 StartupInfo: TStartupInfo; ProcessInfo: TProcessInformation; exitCode: Dword; aVisibility: integer; begin StrPCopy(zAppName, FileName); FillChar(StartupInfo, Sizeof(StartupInfo), #0); //给StartupInfo结构体赋值 StartupInfo.cb := Sizeof(StartupInfo); StartupInfo.dwFlags := STARTF_USESHOWWINDOW; if Visibility then aVisibility := 1 else aVisibility := 0; StartupInfo.wShowWindow := aVisibility; //调用CreateProcess 创建进程,执行指定的可执行文件 if not CreateProcess(nil, zAppName, nil, nil, false , CREATE_NEW_CONSOLE or NORMAL_PRIORITY_CLASS , nil, nil, StartupInfo, ProcessInfo) then Result := -1 else begin //等待可执行文件退出 WaitforSingleObject(ProcessInfo.hProcess, INFINITE); //得到进程终止状态码 GetExitCodeProcess(ProcessInfo.hProcess, exitCode); result := Exitcode; 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 激活并显示一个窗体。如果窗体为最大化或者最小化,窗体恢复到原始的大小和位置。当窗体第一次显示的时候,应用程序记录标记。

转载于:https://www.cnblogs.com/xieyunc/archive/2009/04/30/2793638.html

总结

以上是生活随笔为你收集整理的Delphi 调用外部程序并等待其运行结束的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。