PDA

View Full Version : اجرای یک فایل EXE و WAIT برای آن



Delphi-Man
دوشنبه 16 آذر 1388, 20:53 عصر
سلام دوستان عزیز
چطوری اینکار امکان پذیر است؟

Felony
دوشنبه 16 آذر 1388, 20:58 عصر
منظورتون از Wait برای اون منتظر ماندن تا اجرای اون هست یا تا پایان کار اون ؟

merced
دوشنبه 16 آذر 1388, 21:33 عصر
function RunProcess(FileName : string;
Params : string;
ShowCmd : DWORD;
ProcID : PDWORD;
wait : Boolean): DWORD;
var
StartupInfo: TStartupInfo;
ProcessInfo: TProcessInformation;
begin
FillChar(StartupInfo, SizeOf(StartupInfo), #0);
StartupInfo.cb := SizeOf(StartupInfo);
StartupInfo.dwFlags := STARTF_USESHOWWINDOW or STARTF_FORCEONFEEDBACK;
StartupInfo.wShowWindow := ShowCmd;
if not CreateProcess(
@FileName[1],
@Params[1],
nil,
nil,
False,
CREATE_NEW_CONSOLE or
NORMAL_PRIORITY_CLASS,
nil,
PChar(ExtractFilePath(FileName)),
StartupInfo,
ProcessInfo)
then
Result := WAIT_FAILED
else
begin
if wait = FALSE then
begin
if ProcID <> nil then
ProcID^ := ProcessInfo.dwProcessId;
result := WAIT_FAILED;
exit;
end;
WaitForSingleObject(ProcessInfo.hProcess, INFINITE);
GetExitCodeProcess(ProcessInfo.hProcess, Result);
end;
if ProcessInfo.hProcess <> 0 then
CloseHandle(ProcessInfo.hProcess);
if ProcessInfo.hThread <> 0 then
CloseHandle(ProcessInfo.hThread);
end;