Kabuk simgesini (Windows Gezgini'nde görüntülenen) almak için bu kodu kullanıyorum.
Herkesin bu simgeleri almanın daha hızlı bir yolu var mı? SHGetFileInfo
oldukça yavaş görünüyor.Kabuk simgesini almanın en hızlı yolu
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;
Teşekkürler!
Bu yöntemi geçmişte bir C++ uygulamasından sorun olmadan kullanmıştım. Ancak hafif bir fark var, sadece SHGFI_ICON ve SHGFI_USEFILEATTRIBUTES bayraklarını kullandım. – alf
Evet, hızı bir sorun ise "SHGFI_USEFILEATTRIBUTES" işlevini kullanın. Bununla birlikte, SHGetFileInfo() ', öznitelikleri için gerçek dosyayı sorgulamayı atlar; bu da biraz zaman alabilir. –