![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Ресурсы в программе
Vidog@mobzone.org © (2007-04-23 08:20:00)Как програмно "вшить" в exe'шник какой-то файл, если у меня
есть его [Handle], [FileName] файла, который надо "вшить",
[ResType] и [ResName], которые будит иметь "вшитый" файл.
ЗЫ: Я сделал ф-ю для извлечения файлов из ресурса, но не могу
сделать ф-ю для "вшивания" файлов.
1.)
function ExtractRes(vHandle : Cardinal; ResType, ResName, ResNewName : String) : boolean;
var
Res : TResourceStream;
begin
Result := true;
try
Res := TResourceStream.Create(vHandle, Resname, Pchar(ResType));
Res.SaveToFile(ResNewName);
except
Result := false;
exit;
end;
Res.Free;
end;
2.)
function ExtractResToStream(vHandle : Cardinal; ResType, ResName : String; var vStream : TMemoryStream) : boolean;
var
Res : TResourceStream;
begin
Result := true;
try
Res := TResourceStream.Create(vHandle, Resname, Pchar(ResType));
vStream := TMemoryStream.Create;
Res.SaveToStream(vStream);
except
Result := false;
exit;
end;
Res.Free;
end;
Вызываются следующим образом:
(1)
var
Wnd : Cardinal;
begin
Wnd := LoadLibrary('resources.dll');
ExtractRes(Wnd, 'RCDATA', 'FILENAME.EXE', 'C:\FILENAME.EXE');
end;
(2)
var
Wnd : Cardinal;
Stream : TMemoryStream;
begin
Stream := TMemoryStream.Create;
Wnd := LoadLibrary('resources.dll');
ExtractResToStream(Wnd, 'RCDATA', 'FILENAME.EXE', Stream);
Stream.SaveToFile('FILENAME.EXE');
end;
Помогите плз, кто может.
Vidog@mobzone.org (2007-04-23 08:59:00) [1]Спасибо хоть за это..:)
Сергей М. (2007-04-23 08:56:00) [2]http://www.google.ru/search?hl=ru&newwindow=1&client=firefox-a&rls=org.mozilla%3Aru%3Aofficial&hs=61&q=Delphi+BeginUpdateResource&btnG=%D0%9F%D0%BE%D0%B8%D1%81%D0%BA&lr=lang_ru
Vidog@mobzone.org (2007-04-23 08:47:00) [3]BeginUpdateResource('Test.exe', false);
UpdateResource( Что тут?, 'RCDATA', '1.EXE', Какая-то константа?, А тут?, И тут?);
Vidog@mobzone.org (2007-04-23 08:44:00) [4]После этого файл не читается..Как я понимаю чего-то не так делаю...
Vidog@mobzone.org (2007-04-23 08:43:00) [5]1)Беру Stream : TMemoryStream;
2)Открываю в него нужный мне файл
3)Дописываю в ResourceStream через Write(Stream, SizeOf(Stream));
4)Сохраняю полученный ResourceStream как новый exe файл
Сергей М. (2007-04-23 08:34:00) [6]
> эти методы я уже пробовал, но ничего не получается
Это не методы, а функции.
Показывай что делал и что не получается ...
Vidog@mobzone.org (2007-04-23 08:32:00) [7]А не мог бы ты представить пример функции, а то эти методы я уже пробовал, но ничего не получается!!!
Сергей М. (2007-04-23 08:27:00) [8]см. BeginUpdeteResource + UpdateResource + EndUpdateResource