СообЧа > Дельфинарий > Получить имена всех ресурсов существующих в приложении

 

Получить имена всех ресурсов существующих в приложении

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('Выполнено');
end;

end.



Рейтинг@Mail.ru Rambler's Top100 Яндекс цитирования

Спасибо, что посетили наш сайт.
Copyright © 2000-2008 Сообщество Чайников
Контактная информация  О проекте