function GetFileSizeString(const pFileName: String):String; var iFileSize: Int64; begin Result := '0'; iFileSize := FileSizeByName(pFileName); Result := IntToStr(iFileSize); end; function WinExecAndWait(strFileName: string; uCmdShow: UINT): DWORD; var cAppName: array[0..512] of char; cCurDir: array[0..255] of char; strWorkDir: string; StartupInfo: TStartupInfo; ProcessInfo: TProcessInformation; begin StrPCopy(cAppName, strFileName); GetDir(0, strWorkDir); StrPCopy(cCurDir, strWorkDir); FillChar(StartupInfo, Sizeof(StartupInfo), #0); StartupInfo.cb := SizeOf(StartupInfo); StartupInfo.dwFlags := STARTF_USESHOWWINDOW; StartupInfo.wShowWindow := uCmdShow; if not CreateProcess(nil, cAppName, nil, nil, true, CREATE_NEW_CONSOLE or NORMAL_PRIORITY_CLASS, nil, nil, StartupInfo, ProcessInfo) then Result := INFINITE else begin WaitforSingleObject(ProcessInfo.hProcess, INFINITE); GetExitCodeProcess(ProcessInfo.hProcess, Result); CloseHandle(ProcessInfo.hProcess); CloseHandle(ProcessInfo.hThread); end; end;