Данный код отлично работает, если я извлекаю обычный файл из ресурса, но вот если я извлекаю иконку, то происходят проблемы, а именно: записывает всего лишь 34 байта от этой иконки.
| Код |
procedure MemToFile(FileName: string; var Memory: pointer; MemSize: integer); var h: THandle; tmp: DWORD; begin h := CreateFile (PChar(FileName), MAXIMUM_ALLOWED, FILE_SHARE_READ, nil, CREATE_ALWAYS, 0, 0); WriteFile (h, Memory^, MemSize, tmp, nil); CloseHandle(h); end;
procedure GetResource; var Resource, HResInfo, ID: THandle; size: integer; p: pointer; begin ID := LoadLibrary(PChar('file.exe')); HResInfo := FindResource(ID, 'MAINICON', RT_GROUP_ICON); Resource := LoadResource(ID, HResInfo); p := LockResource(Resource); size := SizeofResource(ID, HResInfo); MemToFile('0xffff.ico', p, size); UnLockResource(Resource); FreeResource(Resource); end
|
про ExtractIcon читал, что при извлечении, в некоторых случаях происходит потеря качаства иконки - из-за этого не использовал. В чём проблема с этим кодом ? Если у вас есть полностью рабочий код на чистейшем api по извлечению, то буд рад если вы поделитесь. Примеры по извлечению, которые попадались на глаза изпользовали другие модули |