Extraire les icones de Shell32.dll
Salut,
je voudrais récupérer les icones qui se trouvent dans la DLL Shell32, pour les utiliser dans mon programme dynamiquement, c'est à dire sans les mettre "en dur" dans une TImageList. J'ai utilisé ExtractIconEx pour faire ça, mais le hic c'est que les icones sont tout moches. Comment faire pour avoir des icones 16x16 tout beau, et en 24bits couleurs par exemple ?
Merci.
Sur une Fiche TForm1 Form1, j'ai posé un TTreeview Treeview1 et ensuite utilisé la procédure suivante (avec le uses ShellAPI):
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
| procedure TForm1.ExtractShell32Icons;
var
IconesListe: TImageList;
i, NbShell32Icones: Cardinal;
IconeLarge, IconeSmall: HICON;
UneIcone: TIcon;
Node: TTreeNode;
begin
TreeView1.Items.Clear;
IconesListe := TImageList.Create(Self);
NbShell32Icones := ExtractIconEx(PChar('c:\windows\system32\shell32.dll'), -1, IconeLarge, IconeSmall, 0);
for i := 0 to NbShell32Icones - 1 do
begin
UneIcone := TIcon.Create;
ExtractIconEx(PChar('c:\windows\system32\shell32.dll'), i, IconeLarge, IconeSmall, 1);
UneIcone.ReleaseHandle;
UneIcone.Handle := IconeSmall;
IconesListe.AddIcon(UneIcone);
end;
TreeView1.Images := IconesListe;
for i := 0 to NbShell32Icones - 1 do
begin
Node := TreeView1.Items.Add(nil, 'node n°' + IntToStr(i));
Node.ImageIndex := i;
end;
end; |
J'ai aussi utilisé LoadImage qui est plus complète, mais pas mieux.
A regarder de plus près, ça a l'air d'être un problême de transparence, l'information de transparence est perdue. Quelqu'un a une idée ? :calim2: