![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
||||
|
||||
|
Написал DLL на сях, которая позволяет программно заменять ресурсы в PE файлах.
Пример использования в Delphi: Код:
type
TReplaceResource = function(sSource,sDest,sType,sName: PChar): Boolean; stdcall;
...
TMainForm = class(TForm)
...
procedure ReplRes();
var
ReplaceResource: TReplaceResource;
begin
if not ReplaceResource(PChar('c:\resfile.dat'),PChar('c:\pefile.exe'),RT_RCDATA,'DATA') then
begin
MessageBox(Handle,'Internal Error!',Caption,MB_ICONERROR);
end;
end;Пример писал по памяти, могут быть ошибки. Описание самой функции: TReplaceResource = function(sSource,sDest,sType,sName: PChar): Boolean; stdcall; sSource - любой файл, sDest - любой PE файл (exe,dll,ocx, и т.д.) sType - тип ресурсов (RT_RCDATA, RT_BITMAP, RT_STRING и т.д.) sName - имя,под которым будет сохранен ресурс По-идее, процедура должна ЗАМЕНЯТЬ УЖЕ СУЩЕСТВУЮЩИЙ ресурс на новый, но я не пробовал использовать ее для добавления нового, может быть,тоже будет работать. Возвращает буленовое значение, как индикатор ошибок (если были ошибки - вернет false, если все прошло успешно - вернет true) Также, для программного редактирования ресурсов, можно использовать API методы (их описание смотрите в SDK или в дельфовом хэлпе): BeginUpdateResource UpdateResource EndUpdateResource Почему я написал DLL на сях с использованием этих API, а не стал использовать АПИ через Делфи? Да потому, что я пробовал через Делфи, но код упрямо отказывался работать, если у кого получится на Делфи реализовать замену\добавление\редактирование ресурсов - буду очень рад этому. Исходники и сама DLL в аттаче. |
| Этот пользователь сказал Спасибо 4kusNick за это полезное сообщение: | ||
kms (07.06.2018)
| ||