Sources
Delphi Russian Knowledge Base
DRKB - это самая большая и удобная в использовании база знаний по Дельфи в рунете, составленная Виталием Невзоровым

How to get all the resource names that are loaded in a given application?

01.01.2007
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.

Взято с сайта https://www.swissdelphicenter.ch/en/tipsindex.php