Получить все имена ресурсов, что были загружены данным приложением

type

TForm1 = class(TForm)

Button1: TButton;

Memo1: TMemo;

procedure Button1Click(Sender: TObject);

private

end;

var

Form1: TForm1;

implementation

{$R *.dfm}

function enumResNamesProc(module: HMODULE; restype, resname: PChar;

list: TStrings): Integer; stdcall;

begin

if HiWord(Cardinal(resname)) 0 then

list.Add(' ' resname)

else

list.Add(Format(' #%d', [loword(Cardinal(resname))]));

Result := 1;

end;

Function StockResourceType(restype: PChar): string;

const

restypenames: Array [1..22] of String =

( 'RT_CURSOR', // = MakeIntResource(1);

'RT_BITMAP', // = MakeIntResource(2);

'RT_ICON', // = MakeIntResource(3);

'RT_MENU', // = MakeIntResource(4);

'RT_DIALOG', // = MakeIntResource(5);

'RT_STRING', // = MakeIntResource(6);

'RT_FONTDIR',// = MakeIntResource(7);

'RT_FONT', // = MakeIntResource(8);

'RT_ACCELERATOR',// = MakeIntResource(9);

'RT_RCDATA', // = MakeIntResource(10);

'RT_MESSAGETABLE',// = MakeIntResource(11);

// DIFFERENCE = 11;

'RT_GROUP_CURSOR',// = MakeIntResource(DWORD(RT_CURSOR 7DIFFERENCE));

'UNKNOWN', // 13 not used

'RT_GROUP_ICON', // = MakeIntResource(DWORD(RT_ICON DIFFERENCE));

'UNKNOWN', // 15 not used

'RT_VERSION', // = MakeIntResource(16);

'RT_DLGINCLUDE', // = MakeIntResource(17);

'UNKNOWN',

'RT_PLUGPLAY', // = MakeIntResource(19);

'RT_VXD', // = MakeIntResource(20);

'RT_ANICURSOR', // = MakeIntResource(21);

'RT_ANIICON' // = MakeIntResource(22);

);

var

resid: Cardinal absolute restype;

begin

if resid in [1..22] then

Result := restypenames[resid]

else

Result := 'UNKNOWN';

end;

function enumResTypesProc(module: HMODULE; restype: PChar; list: TStrings): Integer; stdcall;

begin

if HiWord(Cardinal(restype)) 0 then

list.Add(restype)

else

list.Add(Format('Stock type %d: %s', [LoWord(Cardinal(restype)),

StockResourcetype(restype)]));

EnumResourceNames(module, restype, @enumResNamesProc, Integer(list));

Result := 1;

end;

procedure TForm1.Button1Click(Sender: TObject);

begin

memo1.Clear;

if not EnumResourceTypes(hinstance, @enumResTypesProc, Integer(memo1.Lines)) then

memo1.Lines.Add(Format('GetLastError= %8.8x', [GetLastError]))

else

memo1.Lines.Add('Successful');

end;

end.