![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Большие иконки [D7, XP]
ttt © (2013-03-03 21:08:00)Добрый вечер.
Необходимо извлечь из dll или exe иконку по индексу максимального размера либо 48х48.
Пытался рыть в сторону ExtractIconEx и SHGetFileInfo, но первый возвращает максимум 32х32, а второй иконку приложения.
Возможно ли это стандартными методами или придется шурудить в ресурсах?
ttt (2013-03-04 13:06:00) [1]
function PrivateExtractIcons(lpszFile: PChar; nIconIndex,
cxIcon, cyIcon: integer; phicon: PHANDLE; piconid: PDWORD;
nicon, flags: DWORD): DWORD; stdcall; external user32 name 'PrivateExtractIconsA';
Вот оно!
sniknik (2013-03-04 10:32:00) [2]http://rmklever.com/?p=266
sniknik (2013-03-04 08:20:00) [3]> SHGFI_SYSICONINDEX or SHGFI_ICON or SHGFI_LARGEICON
попробуй оставить только нужное.
ttt (2013-03-03 23:22:00) [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.
Rouse_ (2013-03-03 22:38:00) [5]Покажи код.
ttt (2013-03-03 22:10:00) [6]Ну да, это и есть массив 32х32 иконок.
Rouse_ (2013-03-03 21:14:00) [7]
ExtractIconEx
phiconLarge [out, optional]
Type: HICON*
An array of icon handlesthat receives handles to the large icons extracted from the file. If this parameter is NULL, no large icons are extracted from the file.