Follow along with the video below to see how to install our site as a web app on your home screen.
Note: This feature may not be available in some browsers.
{ Useage: Filename, The file to be executed
Params, Any parameters that require passing to the file
Timeout, Time to wait in mS. Pass the constant INFINITE to wait forever
Visibility, Run window status e.g SW_SHOW, SW_MAXIMIZE
It returns a string containing the last error if any
}
function WaitProcess(Filename: TFilename; Params: string;
Timeout: DWORD; Visibility: integer): string;
var StartupInfo: TStartupInfo;
ProcessInfo: TProcessInformation;
WaitResult: integer;
begin
ZeroMemory(@StartupInfo, SizeOf(TStartupInfo));
with StartupInfo do
begin
cb := SizeOf(TStartupInfo);
dwFlags := STARTF_USESHOWWINDOW or STARTF_FORCEONFEEDBACK;
wShowWindow := Visibility;
end;
if fileexists(filename) or fileexists(params) then
begin
if (CreateProcess(nil, Pchar(Filename +' '+ Params), Nil, Nil,
False, NORMAL_PRIORITY_CLASS,
Nil, nil { pchar(extractfilepath(Params))}, StartupInfo, ProcessInfo))
then
begin
WaitResult := WaitForSingleObject(ProcessInfo.hProcess, Timeout);
if WaitResult = WAIT_TIMEOUT then
begin
result := 'Timeout has occured in waiting for result from compiler.';
TerminateProcess(ProcessInfo.hprocess, 1);
CloseHandle(ProcessInfo.hProcess);
CloseHandle(ProcessInfo.hThread);
exit;
end;
CloseHandle(ProcessInfo.hProcess);
CloseHandle(ProcessInfo.hThread);
Result := 'OK';
end
else
result := 'Create Proccess failed ' + filename + ' '+ Params+ ' Error: '+inttostr(getlasterror);
end
else
result := 'Process file does not exist';
end;
TerminateProcess(ProcessInfo.hprocess, 1);
CloseHandle(ProcessInfo.hProcess);
CloseHandle(ProcessInfo.hThread);