Показать сообщение отдельно
  #2  
Старый 01.02.2011, 04:12
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,093
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Есть.
Делается это через получение ссылки на системный ImageList и получения индекса через специальный вызов API по имени файла.

Код:
  // Load image lists for files icons
  ilSystemSmall.Handle := SHGetFileInfo('', 0, SHFI , SizeOf(SHFI),
                          SHGFI_SMALLICON Or SHGFI_SYSICONINDEX);
  ilSystemLarge.Handle := SHGetFileInfo('', 0, SHFI, SizeOf(SHFI),
                          SHGFI_LARGEICON Or SHGFI_SYSICONINDEX);

и

Код:
function GetSystemImageIndex(AFileName : String) : Integer;
  var
    SHFI : TSHFileInfo;
  begin
    Result := -1;
    Try
      SHGetFileInfo(PChar(AFileName), SHGFI_USEFILEATTRIBUTES,SHFI, sizeof(SHFI),
                    SHGFI_SYSICONINDEX OR SHGFI_SMALLICON OR SHGFI_DISPLAYNAME);
      Result := SHFI.iIcon;
    Except
    End;
  end;
Ответить с цитированием