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

Вниз

Большие иконки   Найти похожие ветки 

 
ttt   (2013-03-03 21:08) [0]

Добрый вечер.

Необходимо извлечь из dll или exe иконку по индексу максимального размера либо 48х48.
Пытался рыть в сторону ExtractIconEx и SHGetFileInfo, но первый возвращает максимум 32х32, а второй иконку приложения.
Возможно ли это стандартными методами или придется шурудить в ресурсах?


 
Rouse_ ©   (2013-03-03 21:14) [1]

ExtractIconEx

phiconLarge [out, optional]
Type: HICON*
An array of icon handles that receives handles to the large icons extracted from the file. If this parameter is NULL, no large icons are extracted from the file.


 
ttt   (2013-03-03 22:10) [2]

Ну да, это и есть массив 32х32 иконок.


 
Rouse_ ©   (2013-03-03 22:38) [3]

Покажи код.


 
ttt   (2013-03-03 23:22) [4]

var
 IconIndex: integer;
 icon: TIcon;
 h1, h2: array [0..$FF] of HICON;
 FI: SHFILEINFO;
 ImageList: HIMAGELIST;
begin
try
 IconIndex:= StrToInt(edtIconIndex.Text);
except
 IconIndex:= -1;
end;

icon:= TIcon.Create;
if IconIndex = -1 then begin
 SHGetFileInfo(PChar(IconFile), 0, FI, SizeOf(FI), SHGFI_SYSICONINDEX or SHGFI_ICON or SHGFI_LARGEICON);
 ImageList:= GetImageListSH(2);
 icon.Handle:= ImageList_GetIcon(ImageList, FI.iIcon, ILD_NORMAL);
 ImageList_Destroy(ImageList);
end else begin
 ExtractIconEx(PChar(IconFile), IconIndex, h1[0], h2[0], 200);
 icon.Handle:= h1[0];
end;

Image1.Canvas.Draw(0, 0, icon);


Так вот. Когда использую SHGetFileInfo то получаю иконку 48х48, но она не работает с индексом.
Далее тестировал содержимое массива. Иконок всего 96 штук в файле. Массив забит только на 96 элементов и все 32х32.


 
sniknik ©   (2013-03-04 08:20) [5]

> SHGFI_SYSICONINDEX or SHGFI_ICON or SHGFI_LARGEICON
попробуй оставить только нужное.


 
sniknik ©   (2013-03-04 10:32) [6]

http://rmklever.com/?p=266


 
ttt   (2013-03-04 13:06) [7]

function PrivateExtractIcons(lpszFile: PChar; nIconIndex,
cxIcon, cyIcon: integer; phicon: PHANDLE; piconid: PDWORD;
nicon, flags: DWORD): DWORD; stdcall; external user32 name "PrivateExtractIconsA";


Вот оно!



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

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

Наверх




Память: 0.48 MB
Время: 0.005 c
15-1372770167
Jeer
2013-07-02 17:02
2013.12.22
Вело-отдых


15-1372969802
Юрий
2013-07-05 00:30
2013.12.22
С днем рождения ! 5 июля 2013 пятница


2-1362401359
Вова
2013-03-04 16:49
2013.12.22
ListView OndrawItem проблемы с рисованием


15-1372932417
Empleado
2013-07-04 14:06
2013.12.22
Программист: берегись!


15-1372872886
Кирюха
2013-07-03 21:34
2013.12.22
Проблема с usb-портами