delphi – 如何正确使用WaitForSingleObject方法等待外部程序终
发布时间:2020-12-15 03:55:50 所属栏目:大数据 来源:网络整理
导读:我正在尝试启动具有提升状态的外部应用程序,并等到它退出后再继续: var FProcess: THandle; ExecInfo: TShellExecuteInfo;begin FillChar(ExecInfo,SizeOf(ExecInfo),0); with ExecInfo do begin cbSize := SizeOf(ExecInfo); fMask := 0; Wnd := AWindow;
我正在尝试启动具有提升状态的外部应用程序,并等到它退出后再继续:
var FProcess: THandle; ExecInfo: TShellExecuteInfo; begin FillChar(ExecInfo,SizeOf(ExecInfo),0); with ExecInfo do begin cbSize := SizeOf(ExecInfo); fMask := 0; Wnd := AWindow; lpVerb := 'runas'; lpFile := PChar(APath); lpParameters := PChar(AParams); lpDirectory := PChar(AWorkDir); nShow := SW_NORMAL; end; Result := ShellExecuteEx(@ExecInfo); if Wait then begin while WaitForSingleObject(ExecInfo.hProcess,INFINITE) <> WAIT_TIMEOUT do Application.ProcessMessages; end; 这个推出,但它只是在等待.调用程序永远不会继续调用WaitForSingleObject,即使在被调用的程序退出之后也是如此. 我尝试过WAIT_OBJECT_0而不是WAIT_TIMEOUT,但我遇到了同样的问题.我在这做错了什么? 解决方法
什么代码
while WaitForSingleObject(ExecInfo.hProcess,INFINITE) <> WAIT_TIMEOUT do Application.ProcessMessages; 该怎么办?这是一个无限循环. 使用公正 WaitForSingleObject(ExecInfo.hProcess,INFINITE); 代替.是的,你需要 fMask:= SEE_MASK_NOCLOSEPROCESS; 获取进程句柄. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |