WaitForSingleObject 示例之一: 等待另一个进程的结束

WaitForSingleObject 等待什么? 在多线程里就是等待另一个线程的结束, 快来执行自己的代码; 不过它可以等待的对象可不止线程; 这里先来一个等待另一个进程结束的例子, 运行效果图:

WaitForSingleObject 示例之一: 等待另一个进程的结束 - 51100k - FatBird



代码文件:


<pre>unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
end;

var
Form1: TForm1;

implementation



var
hProcess: THandle; 


function MyThreadFun(p: Pointer): DWORD; stdcall;
begin
if WaitForSingleObject(hProcess, INFINITE) = WAIT_OBJECT_0 then
Form1.Text := Format('进程 %d 已关闭', [hProcess]);
Result := 0;
end;


procedure TForm1.Button1Click(Sender: TObject);
var
pInfo: TProcessInformation;
sInfo: TStartupInfo;
Path: array[0..MAX_PATH-1] of Char;
ThreadID: DWORD;
begin

GetSystemDirectory(Path, MAX_PATH);
StrCat(Path, 'otepad.exe');


FillChar(sInfo, SizeOf(sInfo), 0);
if CreateProcess(Path, nil, nil, nil, False, 0, nil, nil, sInfo, pInfo) then
begin
hProcess := pInfo.hProcess; 
Text := Format('进程 %d 已启动', [hProcess]); 
CreateThread(nil, 0, @MyThreadFun, nil, 0, ThreadID); 
end;
end;

end.

posted @ 2013-04-28 12:50  小天1981  阅读(822)  评论(0编辑  收藏  举报