進行了部分修改, 利用回傳值來判定是否成功, 若是成功會傳回 大於 32 的 handle, 若是執行失敗, 會傳回 32以下的回傳值來判定執行結果, 並修改為執行 console 的指令行為.
代碼: 選擇全部
function CallExternWait(cmd, param: string): Integer;
var
execinfo:TSHELLEXECUTEINFO;
begin
fillchar(execinfo,sizeof(execinfo),0);
execinfo.cbsize:=sizeof(execinfo);
execinfo.lpverb:=nil;
execinfo.lpfile:=PAnsiChar(cmd);
execinfo.lpparameters:=PAnsiChar(param);
execinfo.fmask:=SEE_MASK_NOCLOSEPROCESS;
execinfo.nshow:=SW_SHOWDEFAULT;
shellexecuteex(@execinfo);
waitforsingleobject(execinfo.hprocess,infinite);
Result := execinfo.hprocess;
end;