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):
J'ai aussi utilisé LoadImage qui est plus complète, mais pas mieux.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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;
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 ?![]()
Partager