Форум: "Прочее";
Текущий архив: 2015.11.29;
Скачать: [xml.tar.bz2];
Внизполучить иконки из imageres.dll Найти похожие ветки
← →
brother © (2015-04-04 10:00) [0]Win7 x64, Delphi7 x32
Как? Даже Restorator 2009 выдернуть не может. Проблеммы x64?
← →
KilkennyCat © (2015-04-04 12:04) [1]ну, ресторатор 2009 не пуп земли, чтоб к нему применять слово "даже".
я пользуюсь http://www.nirsoft.net/utils/iconsext.html
← →
Кто б сомневался © (2015-04-04 13:32) [2]Этот откроет
http://www.angusj.com/resourcehacker/
← →
brother © (2015-04-04 13:54) [3]вообще, мне програмно надо)
← →
junglecat © (2015-04-04 14:50) [4]LoadImage()?
← →
Кто б сомневался © (2015-04-05 17:13) [5]Может это будет работать? PrivateExtractIcons
http://stackoverflow.com/questions/5955288/extract-all-icons-from-an-exe-without-using-extracticonex
https://msdn.microsoft.com/en-us/library/windows/desktop/ms648075(v=vs.85).aspx
← →
brother © (2015-04-05 17:45) [6]эх, видимо не найду быстро... больше 32x32 вытащить не получается
← →
Eraser © (2015-04-05 18:48) [7]
> brother © (05.04.15 17:45) [6]
лучше ищи уже подготовленный добрыми людьми набор стандартных иконок.
← →
junglecat © (2015-04-05 18:52) [8]hLib := LoadLibraryEx("imageres.dll", 0, LOAD_LIBRARY_AS_DATAFILE);
hImg := LoadImage(hLib, PChar(PInteger(1001)), IMAGE_ICON, 128, 128, 0);
Image1.Picture.Icon.Handle := hImg;
FreeLibrary(hLib);
← →
Кто б сомневался © (2015-04-05 19:30) [9]
> brother © (05.04.15 17:45) [6]
>
> эх, видимо не найду быстро... больше 32x32 вытащить не получается
Я с exe вытягивал с [5] даже 64x64 - хотя такой иконки я точно не ложил, максимум 48x48. Видимо он ресайз делает под нужный размер.
Правда не знаю как в dll
← →
brother © (2015-04-05 19:49) [10][8], http://stackoverflow.com/questions/5955288/extract-all-icons-from-an-exe-without-using-extracticonex
все выдирает 32х32, потом ресайзит под размер(
← →
brother © (2015-04-05 19:51) [11]вот это честно вытягивает:
procedure GetIconVista(FILE_NAME: Widestring; var icon: TBitmap32);
var
siif : IShellItemImageFactory;
size : TSize;
icon_handle : HBitmap;
bm : TBitmap;
begin
SHCreateItemFromParsingName(PwideChar(FILE_NAME), nil, IID_IShellItemImageFactory, siif);
size.cx := 48;
size.cy := 48;
siif.GetImage(size, {0} {SIIGBF_THUMBNAILONLY} SIIGBF_ICONONLY, icon_handle);
bm := TBitmap.Create();
bm.PixelFormat := pf32bit;
try
bm.Handle := icon_handle;
icon:= TBitmap32.Create;
icon.Width:= bm.Width;
icon.Height:= bm.Height;
icon.Assign(bm);
icon.DrawMode:= dmBlend;
finally
bm.Free();
end;
end;
но увы, индекс иконки тут нельзф указать...
← →
Кто б сомневался © (2015-04-05 20:37) [12]
> вот это честно вытягивает:
А что значит честно, можешь подробнее рассказать?
> все выдирает 32х32, потом ресайзит под размер(
Т.е. если указать 16x16 или 48x48 то вернет иконку измененную на основе 32x32?
Я вроде визуально не заметил разницы.
← →
Кто б сомневался © (2015-04-05 20:57) [13]IID_IShellItemImageFactory
А, это только начиная с Висты, под XP не будет работать.
← →
brother © (2015-04-06 08:14) [14]> А что значит честно, можешь подробнее рассказать?
да, если есть в коллекции нужный размер, то будет получен именно он, без ресайза
> Т.е. если указать 16x16 или 48x48 то вернет иконку измененную
> на основе 32x32?
для 48 и выше размеров возвращает всегда 32, хотя больший размер в бибиотеке присутствует...
← →
brother © (2015-04-06 08:14) [15][13] покурю, спс...
← →
brother © (2015-04-06 08:59) [16]О_о . [13] в [11] я ее и юзаю!)
Страницы: 1 вся ветка
Форум: "Прочее";
Текущий архив: 2015.11.29;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.002 c