外部程序调用问题(20分)

  • 主题发起人 主题发起人 swpihwd
  • 开始时间 开始时间
S

swpihwd

Unregistered / Unconfirmed
GUEST, unregistred user!
用WinExec或ShellExecute调用外部可执行程序,如何使可执行程序执行完后才返回调用者?
即外部程序执行时,不能激活调用者窗口。
 
先createprocess
然后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;
------------------
可否达到你的要求?
 
用ShellExecuteEx,可以等待被调用者结束。
 
后退
顶部