启动外部程序并等待它结束(2)

2008-04-09 04:28:22来源:互联网 阅读 ()

新老客户大回馈,云服务器低至5折

nil, nil, SW_SHOW);

* 用Windows Explorer打开一个文件夹:

ShellExecute(Handle, ''''explore'''', PChar(''''c:\windows)'''',

nil, nil, SW_SHOW);

* 运行一个DOS命令并立即返回:

ShellExecute(Handle, ''''open'''', PChar(''''command.com''''),

PChar(''''/c copy file1.txt file2.txt''''), nil, SW_SHOW);

* 运行一个DOS命令并保持DOS窗口打开 ("stay in DOS"):

ShellExecute(Handle, ''''open'''', PChar(''''command.com''''),

PChar(''''/k dir''''), nil, SW_SHOW);

启动一个外部程序并不难吧?不过,我们如何知道它是否运行结束了呢?我们的程序又怎样等待它结束呢?

三、启动外部程序并等待它结束的函数

我们可以通过进程句柄(process handle)来查看进程(程序)是否结束。为了得到进程句柄,有两个Win32 API函数可以利用:ShellExecuteEx 或者CreateProces。解决这个问题最简单的方法是,使用ShellExecuteEx启动一个外部程序,然后使用WaitForSingleObject管理这个外部程序的进程句柄。我们可以这样定义一个函数:

……

{ ExecAppWait:功能:运行外部程序并等待它结束。。

运行外部程序APPNAME,参数PARAMS;

Returns:如果外部程序出错返回 FASLE

}

function ExecAppWait(AppName, Params: string): Boolean ;

……

function ExecAppWait(AppName, Params: string): Boolean;

var

// Structure containing and receiving info about application to start

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:轻松实现DBGrid的多表头

下一篇:谈Delphi编程中“流”的应用--可读写信息在文件中