请教: 下面是一个运行外部程序并等待其启动结束的程序,实际运行的时候不太稳定,有时候会出现被执行程序打不开的情况,请帮忙分析一下问

function waitrun(app:pansichar):cardinal;
var
si:startupinfo;
pi:process_information;
begin
fillchar(si,sizeof(si),0);
fillchar(pi,sizeof(pi),0);
si.cb:=sizeof(si);
si.dwFlags:=startf_useshowwindow;
si.wShowWindow:=sw_hide;
createprocess(nil,app,nil,nil,false,normal_priority_class,nil,nil,si,pi);
waitforinputidle(pi.hprocess,infinite);
result:=pi.dwProcessId;
end;

大部分情况下还是可以的,只是有时候会出现被运行程序提示'can not opened'的提示,是不是哪个参数设置的有些不当?
[528 byte] By [lkdbdlkq] at [2008-1-9]