Another possibility, if you need it for an external executable file (without launching):
procedure InfoProc(const Name: string; NameType: TNameType; Flags: Byte; Param: Pointer); begin case NameType of ntContainsUnit: if Name = 'System' then PBoolean(Param)^ := False; end; end; function UsesRuntimePackages(const ExeName: TFileName): Boolean; var Module: HMODULE; Flags: Integer; begin Result := True; Module := LoadLibraryEx(PChar(ExeName), 0, LOAD_LIBRARY_AS_DATAFILE); try Flags := 0; GetPackageInfo(Module, @Result, Flags, InfoProc); finally FreeLibrary(Module); end; end;
source share