Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Ресурсы в программе


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


Наверх

Титульная страница Поиск, карта сайта Написать письмо