本文整理自网络,侵删。
delphi调用外部程序并等待其运行结束
调用外部程序大家应该都知道该怎么做,但如何知道你调用的程序运行完毕了呢?也许下面的代码可以帮助你.
uses
Windows,
SysUtils,
Classes,
ShellAPI;
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 激活并显示一个窗体。如果窗体为最大化或者最小化,窗体恢复到原始的大小和位置。当窗体第一次显示的时候,应用程序记录标记。
相关阅读 >>
Delphi kbmmw sampleservice/sampleclient方式传输数据集
Delphi用idhttp.get访问一个网址返回403错误,但用ie浏览器访问正常
更多相关阅读请进入《Delphi》频道 >>