Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "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.037 c
2-1163389925
NigthSkif
2006-11-13 06:52
2006.12.03
Запрос


6-1152028321
SpellCaster
2006-07-04 19:52
2006.12.03
Странности у TTcpClient и TTcpServer


15-1163522471
Суслик
2006-11-14 19:41
2006.12.03
Перехват конскольного вывода другой программой на PHP


2-1163346433
Stan
2006-11-12 18:47
2006.12.03
Published свойство


2-1163853193
Alians
2006-11-18 15:33
2006.12.03
Подключение интернета.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский