您的位置:首页 > 运维架构 > Shell

我在delphi中用shellExecute启动了一个程序(ftp);然后想做一个等待,只到ftp进程结束,再继续下面的操作,请问如何监控这个进程是否已结束?

2009-02-03 09:47 896 查看
我在delphi中用shellExecute启动了一个程序(ftp);然后想做一个等待,只到ftp进程结束,再继续下面的操作,请问如何监控这个进程是否已结束? Delphi / Windows SDK/API
http://www.delphi2007.net/DelphiAPI/html/delphi_20061115114909229.html

如题,例如:

Hinstance:= ShellExecute(Application.Handle,nil,pchar('ftp'),pchar('-i -n -s:'+ScriptName),nil,SW_SHOWNORMAL);
for i:=0 to 10 do
begin
sleep 1000;
if ftp_end() then
break;
end;

用OpenProcess配合WaitForSingleObject应该可以。

转的

执行一个外部程序,并等待它完成
Function WinExecExW(cmd,workdir:pchar;visiable:integer):DWORD;
var
StartupInfo:TStartupInfo;
ProcessInfo:TProcessInformation;
begin
FillChar(StartupInfo,SizeOf(StartupInfo),#0);
StartupInfo.cb:=SizeOf(StartupInfo);
StartupInfo.dwFlags:=STARTF_USESHOWWINDOW;
StartupInfo.wShowWindow:=visiable;
if not CreateProcess(nil,cmd,nil,nil,false,Create_new_console or Normal_priority_class,nil,nil,StartupInfo,ProcessInfo) then
result:=0
else
begin
waitforsingleobject(processinfo.hProcess,INFINITE);
GetExitCodeProcess(ProcessInfo.hProcess,Result);
end;
end;

waitforsingleobject这个函数在xp下好象有问题,会一直等待,我现在不敢用这个;;

shellExectue 返回了进程的句柄,理论上通过 Hinstance应该是可以查看它的状态的,只是不知道具体怎么做!

那不如自己用TIdFTP
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐