PDA

View Full Version : اجرای یک فایل exe و منتظر ماندن تا پایان آن



دنیای دلفی
شنبه 01 اسفند 1383, 17:39 عصر
کد زیر می تواند یک فایل اجرایی را اجرا کند و ادامه اجرای کدها تا وقتی که برنامه اجرا شده پایان نیافته متوقف می شود ولی مشکل من این است که تابع
GetModuleUsag مربوط به چه یونیت یا کتابخانه ای است چون روی این تابع خطا می دهد :


var
Wait:THandle;

Wait:=winexec('c:\windows\calc.exe',SW_Show);
while GetModuleusage(wait)<>0 do
application.processmessages;

اگر کسی لطف کند مشکل را حل کند لطف بزرگی کرده


:موفق:

دنیای دلفی
یک شنبه 02 اسفند 1383, 00:27 صبح
خوب مشکل حل شد شاید شما هم نیاز داشته باشید

این هم کد کامل اجرای یک فایل exe و منتظر ماندن برنامه تا بسته شدن فایل اجرا شده .



uses
WinTypes, WinProcs, SysUtils;

{ WindowState is een van de SW_xxx constanten. Zoek ShowWindow}
{op in de API help voor een lijst. }
function ExecAndWait(const Filename, Params: string;
WindowState: word): boolean;
{$IFDEF WIN32}
var
SUInfo: TStartupInfo;
ProcInfo: TProcessInformation;
CmdLine: string;
begin
{ Omgeef filenaam met aanhalingstekens i.v.m. lange }
{ bestandsnamen met spaties}
CmdLine := '"' + Filename + '"' + Params;

FillChar(SUInfo, SizeOf(SUInfo), #0);
with SUInfo do
begin
cb := SizeOf(SUInfo);
dwFlags := STARTF_USESHOWWINDOW;
wShowWindow := WindowState;
end;

Result := CreateProcess(NIL, PChar(CmdLine), NIL, NIL, FALSE,
CREATE_NEW_CONSOLE or NORMAL_PRIORITY_CLASS, NIL,
PChar(ExtractFilePath(Filename)), SUInfo, ProcInfo);
{ Wacht erop totdat deze gereed is}
if Result then
begin
WaitForSingleObject(ProcInfo.hProcess, INFINITE);
{ Clean up the handles. }
CloseHandle(ProcInfo.hProcess);
CloseHandle(ProcInfo.hThread);
end;

{$ELSE}

var
InstanceID : THandle;
Buff: array[0..255] of char;
begin
StrPCopy(Buff, Filename + ' ' + Params);
InstanceID := WinExec(Buff, WindowState);

if InstanceID < 32 then { een waarde kleiner dan 32}
{ betekent een Exec fout }
Result := FALSE
else begin
Result := TRUE;
repeat
Application.ProcessMessages;
until Application.Terminated or
(GetModuleUsage(InstanceID) = 0);
end;
{$ENDIF}
end;



:موفق: ::نوشتن::