PDA

View Full Version : سوال: اجرای دو برنامه همزمان



s_savabi
شنبه 27 شهریور 1389, 10:38 صبح
سلام دوستان
میخام در حالی که برنامه داره یه محاسباتی رو انجام میده یه exe دیگه اجرا بشه که حالت انتظار رو نشون بده و پس از اتمام محاسبات اون exe خودش kill بشه
همین از بین رفتن exe برام خیلی مهمه که خودکار بسته بشه
لطفا راهنمایی کنید
مرسی

Felony
یک شنبه 28 شهریور 1389, 06:26 صبح
از تابع زیر استفاده کنید :

Function ExecuteAndWait(sExecutableFile : String) : Boolean;
var
siInfo : TStartUpInfo;
piInfo : TProcessInformation;
begin
FillChar(siInfo, SizeOf(siInfo), #0);

with siInfo do begin
cb := SizeOf(siInfo);
dwFlags := STARTF_USESHOWWINDOW;
wShowWindow := SW_SHOWNORMAL;
end;
Result := CreateProcess(NIL, pChar(sExecutableFile), NIL, NIL, FALSE, CREATE_NEW_CONSOLE or NORMAL_PRIORITY_CLASS, NIL, pchar(ExtractFilePath(sExecutableFile)),siInfo, piInfo);
if Result then
WaitForSingleObject(piInfo.hprocess,INFINITE);
end;



//////////////////////////////////

function ExecAndWait(const ExecuteFile, ParamString : string): boolean;
var
SEInfo: TShellExecuteInfo;
ExitCode: DWORD;
begin
FillChar(SEInfo, SizeOf(SEInfo), 0);
SEInfo.cbSize := SizeOf(TShellExecuteInfo);
with SEInfo do
begin
fMask := SEE_MASK_NOCLOSEPROCESS;
Wnd := Application.Handle;
lpFile := PChar(ExecuteFile);
lpParameters := PChar(ParamString);
nShow := SW_HIDE;
end;
if ShellExecuteEx(@SEInfo) then
begin
repeat
Application.ProcessMessages;
GetExitCodeProcess(SEInfo.hProcess, ExitCode);
until (ExitCode <> STILL_ACTIVE) or Application.Terminated;
Result:=True;
end
else Result:=False;
end;

alinikaein
دوشنبه 05 مهر 1389, 00:08 صبح
چرا يه برنامه ديگه؟
خوب از يه فرم ديگه استفاده كنيد و فرم مربوطه را نمايش بديد.

در صورتي كه از انيميشن استفاده مي‌كنيد، مي‌تونيد پردازش‌هاي خودتون را داخل يك نخ (Thread) قرار بديد تا برنامه حالت فريز پيدا نكنه.

يا علي... موفق باشيد...