Получить все имена ресурсов, что были загружены данным приложениемDelphi , Файловая система , РесурсыПолучить все имена ресурсов, что были загружены данным приложением
Оформил: DeeCo 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. Перевод контента на русский язык: Этот код-snippet на Delphi предназначен для извлечения имен ресурсов, которые были загружены приложением. Вот подробное описание каждого шага:
Когда вы запустите этот код, он отобразит все имена ресурсов, загруженных приложением, в текстовом блоке. Если возникнут ошибки во время процесса перечисления, они также будут отображаться. Для улучшения этого кода есть несколько предложений:
В качестве альтернативных решений вы также можете использовать функцию Вот пример, как вы можете модифицировать код с помощью
В этом примере Получить имена ресурсов, загруженных приложением, можно с помощью функции EnumResourceTypes, которая вызывает процедуру enumResTypesProc для каждого типа ресурса. Комментарии и вопросыПолучайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.
|
||||
©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 |