babila
یک شنبه 12 مهر 1383, 11:42 صبح
دوستان من چطور می تونم دو تا فایل اجراپی (مثلا دو تا فایل Setup.exe) را
پشت سر هم اجرا کنم طوری که اولین فایل Setup اجرا شده و تمام مراحل نصب به
پایان برسدو سپس فایل اجراپی دوم اجرا شود طوری که این دو فایل اجراپی همزمان
احرا نشوند. :roll:
SalarSoft
سه شنبه 14 مهر 1383, 10:58 صبح
با استفاده از تابع زیر و قرار دادن پارامتر MustWait به مقدار True برنامه صبر خواهد کرد تا اجرای برنامه فوق به پایان برسد! :)
مثلا:
<span dir=ltr>RunProcess('c:\myexe.exe',true);</span>
Function RunProcess(Const AppPath:String;MustWait:Boolean=False;AppParams:St ring='';Visibility:Word=SW_SHOWNORMAL):DWord;
Var
SI:TStartupInfo;
PI:TPROCessINFORMATION;
Proc:THandle;
zFileName:Array[0..Max_Path*2]of char;
zParams:Array[0..Max_Path]of char;
begin
FillChar(SI,SizeOf(SI),0);
SI.cb:=SizeOf(Si);
Si.wShowWindow:=Visibility;
If Not CreateProcess(strPCopy(zFilename,AppPath),
StrPCopy(zParams,APpParams),
nil,nil,False,NORMAL_PRIORITY_CLASs ,nil,nil,SI,PI) then
Raise EXCeption.CreateFmt('Failed to execute program '+
apppath+'.Error Code %d',[GetlastError]);
Proc:=PI.hProcess;
CloseHandle(Pi.HThread);
If MustWait then
If WaitForSingleObject(Proc,infinite)<>Wait_Failed then
GetExitCodeProcess(Proc,Result);
CloseHandle(Proc);
end;
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.