Estoy usando este código para obtener el icono de shell (el que se muestra en el Explorador de Windows).
¿Alguien tiene una experiencia con una forma más rápida de obtener estos íconos? El SHGetFileInfo
parece ser bastante lento.La forma más rápida de obtener el icono de 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;
Gracias!
He usado este método en el pasado sin problemas de una aplicación C++. Sin embargo, hay una pequeña diferencia, solo usé las banderas 'SHGFI_ICON' y' SHGFI_USEFILEATTRIBUTES'. – alf
Sí, definately use 'SHGFI_USEFILEATTRIBUTES' si la velocidad es un problema. Con eso, 'SHGetFileInfo()' omite consultar el archivo real para sus atributos, lo que puede llevar algo de tiempo. –