如何判断被调用外部程序执行完毕? ( 积分: 50 )

  • 主题发起人 主题发起人 jhddx
  • 开始时间 开始时间
J

jhddx

Unregistered / Unconfirmed
GUEST, unregistred user!
我的一个程序需要调用多个外部的EXE程序..采用循环一个个执行..
问题是怎么控制执行完个在执行下一个呢
怎么判断某个程序已经执行完毕并且关闭了?
 
你要取得外部程序执行完毕所处的状态,然后用于判断.
判断外部程序是否关闭的函数为FindWindow.
用FindWindow()查找你要找的窗口,lpClassName,lpWindowName分别就是指窗口
的类名和窗口名,这两个参数有一个就可以查找到窗口。
例如
var
hWndClose:HWnd

begin
hWndClose := FindWindow(nil, '计算器')

if hWndClose = 0 then
begin

end;
 
hProcess := CreateProcess(...)
WaitForSingleObject(hProcess, ...)
 
下面这个函数调用外部程序,执行完毕后才返回真。

function Run(sCommandLine: string): Boolean
//Time out when 1 hour elapsed
var
lpStartupInfo: TStartupInfo;
lpProcessInformation: TProcessInformation;
begin
FillChar(lpStartupInfo, Sizeof(TStartupInfo), #0);
lpStartupInfo.dwFlags := STARTF_USESHOWWINDOW;
lpStartupInfo.wShowWindow := SW_SHOW;
Result := CreateProcess(nil, PChar(sCommandLine),
nil, nil, True, NORMAL_PRIORITY_CLASS, nil, nil,
lpStartupInfo, lpProcessInformation) and
(WaitForSingleObject(lpProcessInformation.hProcess, 3600000) <> WAIT_FAILED);
end;
 
谢谢各位了..问题解决!
 

Similar threads

后退
顶部