Je suis en train de développer une liste listée sur le shell. Lorsque j'essaie d'extraire une icône/image de shell ... J'essaie d'extraire une miniature en utilisant IExtractImage si cela échoue, j'essaie d'extraire des icônes en utilisant IExtractIcon, pour obtenir le maximum de iconsize, mais IExtractIcon donne des résultats étranges. Le problème est que j'ai essayé d'utiliser une méthode qui extrait des icônes d'une liste d'images, mais s'il n'y a pas de grande icône (256x256) cela rendra l'icône plus petite à la position topleft de l'icône et ça n'a pas l'air bien. C'est pourquoi j'essaie d'utiliser l'IExtractIcon à la place. Mais les icônes qui apparaissent sous la forme d'icônes 256x256 dans ma méthode d'extraction de l'imagiste indiquent des tailles d'icônes de 33 grandes et 16 petites. Alors, comment vérifier si une grande icône (256x256) existe? Si vous avez besoin de plus d'informations, je peux fournir un exemple de code.Utilisation et résultat de Delphi Shell IExtractIcon
if PThumb.Image = nil then
begin
OleCheck(ShellFolder.ParseDisplayName(0, nil, StringToOleStr(PThumb.Name), Eaten, PIDL, Atribute));
ShellFolder.GetUIObjectOf(0, 1, PIDL, IExtractIcon, nil, XtractIcon);
CoTaskMemFree(PIDL);
bool:= False;
if Assigned(XtractIcon) then
begin
GetLocationRes := XtractIcon.GetIconLocation(GIL_FORSHELL, @Buf, sizeof(Buf), IIdx, IFlags);
if (GetLocationRes = NOERROR) or (GetLocationRes = E_PENDING) then
begin
Bmp := TBitmap.Create;
try
OleCheck(XtractIcon.Extract(@Buf, IIdx, LIcon, SIcon, 32 + (16 shl 16)));
Done:= False;
Roy M Klever
voir ce lien http://stackoverflow.com/questions/1703186/can-48x48-or-64x64-icons-be-obtained-from-the-vista-shell – RRUZ
Merci, mais c'est un de mes problèmes. .. si l'élément n'a pas une grande icône (256x256) mais seulement une icône normale (32x32) vous obtenez toujours un bitmap 256x256 mais maintenant avec l'icône 32x32 dans le coin topleft de l'image bitmap ... semble stupide et n'est pas utile pour moi puisque je l'échelle de 56 à 256 pixels. J'essaie de trouver comment je suis supposé obtenir l'image/icône représentée dans l'Explorateur pour que je puisse avoir le même look. –
AFAIK Explorer utilise la liste d'images système, il n'extrait pas d'icône pour chaque fichier. –