Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.09.08;
Скачать: CL | DM;

Вниз

Как сохранить ЕХЕ файл из ресурса на харде?   Найти похожие ветки 

 
electric ©   (2003-08-25 14:35) [0]

Как сохранить ЕХЕ файл из ресурса на харде?


 
HolACost! ©   (2003-08-25 14:56) [1]

TResourceStream - если прямо в лоб и на Дельфи!


 
N169   (2003-08-25 14:57) [2]

Извиняюсь что на Це++, но идея будет понятна:

В файле .rc:

175 DOCUMENTS DISCARDABLE "mylib.dll"
176 DOCUMENTS DISCARDABLE "myexe.exe"

В приложении:

PCHAR resid[] = { "mylib.dll", "#175",
"myexe.exe", "#176",
NULL,NULL };

// Извлекает файлы из ресурсов
void ExtractInstallFiles(void)
{
AnsiString AppDir = ExtractFilePath(Application->ExeName);
AnsiString FileName = "";

HRSRC hres;
ULONG size,cb;
PUCHAR ptr;
ULONG index = 0;
HANDLE hfile;

while (resid[index])
{
hres = FindResource(NULL,resid[index+1],"DOCUMENTS");
size = SizeofResource(NULL,hres);
ptr = (PUCHAR)LoadResource(NULL,hres);
if (ptr)
{
FileName = AppDir + AnsiString(resid[index]);
hfile = CreateFile(FileName.c_str(),GENERIC_WRITE,0,NULL,CREATE_ALWAYS,FILE_AT TRIBUTE_NORMAL,NULL);
WriteFile(hfile,ptr,size,&cb,NULL);
CloseHandle(hfile);
};
index += 2;
};

};


 
electric ©   (2003-08-25 15:21) [3]

Я не проф. Мне сложно так врубится по одному слову =( или на другом языке. Дайте примерчик!


 
HolACost! ©   (2003-08-25 15:25) [4]

А что нажать F1 не судьба?
To All: пример откудато скоммунизденый (уверен, что все права в резерве)

procedure TForm1.ExtractRes(ResType, ResName, ResNewName : String);
var
Res : TResourceStream;
begin
Res := TResourceStream.Create(Hinstance, Resname, RT_VERSION);
Res.SavetoFile(ResNewName);
Res.Free;
end;


 
HolACost! ©   (2003-08-25 15:26) [5]

Вместо RT_VERSION надо ResType


 
electric ©   (2003-08-25 15:56) [6]

не работает если ResType ! да и ваще никак не работает! может обясните попонятнее, а то совсем я запутался =(


 
HolACost! ©   (2003-08-25 16:07) [7]

Клиника, дорогой мой!
Я думал догадаешься, как поправить!

procedure TForm1.ExtractRes(ResType, ResName, ResNewName : String);
var
Res : TResourceStream;
begin
Res := TResourceStream.Create(Hinstance, Resname, PChar(ResType));
Res.SavetoFile(ResNewName);
Res.Free;
end;

Вызов

ExtractRes("Version", "#1", "c:\ver.txt");


PS:
Ты хоть знаешь, как ресурсы выглядят? Как они структурированы?


 
electric ©   (2003-08-25 19:49) [8]

нет не знаю как они выглядят и как они структурированы. Поэтому я так и не сделал эту прогу =( скажи что обозначает "Version", "#1", "c:\ver.txt"


 
electric ©   (2003-08-25 20:05) [9]

нет не знаю как они выглядят и как они структурированы. Поэтому я так и не сделал эту прогу =( скажи что обозначает "Version", "#1", "c:\ver.txt"



Страницы: 1 вся ветка

Текущий архив: 2003.09.08;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.027 c
3-24375
Nikkkkk
2003-08-18 15:46
2003.09.08
Быстрый поиск при помощи TTable


3-24357
P0tia
2003-08-17 12:57
2003.09.08
Проблема с молпиляцией ДБ


3-24390
FREEMAN
2003-08-15 12:15
2003.09.08
Hint в DBgrid


1-24428
Agent_03
2003-08-26 00:35
2003.09.08
Печать Landscape


14-24672
Mike_Goblin
2003-08-20 12:23
2003.09.08
Anekdot.ru - рулит