function
WinExecAndWait(FileName:
String
; Visibility :
integer
):
Cardinal
;
var
zAppName:
array
[
0..512
]
of
char
;
zCurDir:
array
[
0..255
]
of
char
;
WorkDir:
String
;
StartupInfo:TStartupInfo;
ProcessInfo:TProcessInformation;
begin
StrPCopy(zAppName,FileName);
GetDir(
0
,WorkDir);
StrPCopy(zCurDir,WorkDir);
FillChar(StartupInfo,Sizeof(StartupInfo),#
0
);
StartupInfo
.
cb := Sizeof(StartupInfo);
StartupInfo
.
dwFlags := STARTF_USESHOWWINDOW;
StartupInfo
.
wShowWindow := Visibility;
if
not
CreateProcess(
PChar
(FileName),
nil
,
nil
,
nil
,
false
, CREATE_NEW_CONSOLE
or
NORMAL_PRIORITY_CLASS,
nil
,
nil
, StartupInfo, ProcessInfo)
then
begin
Result :=
0
;
end
else
begin
WaitforSingleObject(ProcessInfo
.
hProcess,
200
);
GetExitCodeProcess(ProcessInfo
.
hProcess, Result);
end
;
end
;