Форум: "WinAPI";
Текущий архив: 2006.12.03;
Скачать: [xml.tar.bz2];
ВнизDll в EXE. модули windows, messages //маленький размер Найти похожие ветки
← →
FFx01 © (2006-07-23 11:33) [0]Уважаемые, у меня вопрос, возможно ли в дельфи встоить длл(15 кб) в ехе и потом ее распаковать. Используя только модули windows, messages.(так как важно написать маленький по размеру проект)
Или как можно распаковать {$R *.res} без использования SysUtils, так как в дельфи 7 модуль слишком громоздкий.
Ведь как-то возможно создать, что-то типо stream массива и записать туда еще в исходнике.
Или если можно "Как создать в EXE Ресурс" http://forum.sources.ru/index.php?showtopic=148176
расскажите как этот модуль использовать для таких целей.
Была даже мысль через base64 делать :D
← →
Ketmar © (2006-07-23 12:33) [1]FindResource()/SizeofResource()/LoadResource()
← →
FFx01 © (2006-07-23 12:59) [2]var
FindHandle, ResHandle: THandle;
ResPtr: Pointer;
begin
FindHandle := FindResource(HInstance, "resname.res", "g7dll.dll");
if FindHandle <> 0 then
begin
ResHandle := LoadResource(HInstance, FindHandle);
if ResHandle <> 0 then
begin
ResPtr := LockResource(ResHandle);
if ResPtr <> nil then
UnlockResource(ResHandle);
end;
FreeResource(FindHandle);
end;
end;
попытался написать так, но как сохранить длл рядом с ехе.
← →
Fay © (2006-07-23 13:09) [3]
"resname.res", "g7dll.dll"
Чё это?
← →
DTStamp (2006-07-23 13:20) [4]
function ExtractResource(const ResName, FileName: String): Boolean;
var
hFile: THandle;
hResInfo, hResData: THandle;
ResSize, nBW: Cardinal;
PRes: Pointer;
begin
Result := False;
hResInfo := FindResource(hInstance,PChar(ResName),RT_RCDATA);
if hResInfo = 0 then
Exit;
ResSize := SizeOfResource(hInstance,hResInfo);
hResData := LoadResource(hInstance,hResInfo);
PRes := LockResource(hResData);
hFile := CreateFile(PChar(FileName),GENERIC_WRITE,0,nil,CREATE_NEW,0,0);
if hFile <> INVALID_HANDLE_VALUE then
begin
WriteFile(hFile,PRes^,ResSize,nBW,nil);
CloseHandle(hFile);
end;
Result := Assigned(PRes) and (FileExists(FileName));
end;
← →
DTStamp (2006-07-23 13:27) [5]Да, FileExists можно заменить на
var
FileAttr: DWORD;
...
...
FileAttr := GetFileAttributes(PChar(FileName));
Result := Assigned(PRes) and (FileAttr <> DWORD(-1));
← →
FFx01 © (2006-07-23 15:48) [6]DTStamp, респектище..
тема закрыта.
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2006.12.03;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.05 c