Sto usando questo codice per ottenere l'icona della shell (quella visualizzata in Esplora risorse).
Qualcuno ha un'esperienza con un modo più veloce per ottenere queste icone? Il SHGetFileInfo
sembra essere piuttosto lento.Il modo più veloce per ottenere l'icona della shell
procedure TForm2.Button1Click(Sender: TObject);
var
FileInfo: TSHFileInfo;
begin
FillChar(FileInfo, SizeOf(FileInfo), 0);
if SHGetFileInfo(PChar('c:\windows\'), 0, FileInfo, SizeOf(FileInfo),
SHGFI_ICON or SHGFI_SMALLICON or SHGFI_SYSICONINDEX) <> 0 then
DrawIconEx(Canvas.Handle, 10, 10, FileInfo.hIcon, 0, 16, 16, 0, DI_IMAGE or
DI_MASK);
end;
Grazie!
Ho usato questo metodo in passato senza problemi da un'applicazione C++. C'è una leggera differenza, ho usato solo i flag 'SHGFI_ICON' e' SHGFI_USEFILEATTRIBUTES'. – alf
Sì, sicuramente usare 'SHGFI_USEFILEATTRIBUTES' se la velocità è un problema. Con questo, 'SHGetFileInfo()' salta interrogando il file reale per i suoi attributi, che può richiedere del tempo. –