Einzelnen Beitrag anzeigen

Benutzerbild von Deep-Sea
Deep-Sea

Registriert seit: 17. Jan 2007
907 Beiträge
 
Delphi XE2 Professional
 
#12

Re: Extrahieren des ICONs von BELIEBIGEM Dateityp?

  Alt 26. Mär 2010, 07:29
Delphi-Quellcode:
uses ShellAPI, Math;

function GetFileIcon(AFileName: String; ASmall: Boolean = True; AIndex: Integer = 0): HIcon;
var
  LDummy: HIcon;
  LInfo: TSHFileInfo;
begin
  LDummy := 0;
  If ExtractIconEx(PChar(AFileName), -1, LDummy, LDummy, 0) <> 0 then
  begin
    If ASmall then ExtractIconEx(PChar(AFileName), AIndex, LDummy, Result, 1)
      else ExtractIconEx(PChar(AFileName), AIndex, Result, LDummy, 1);
  end else begin
    SHGetFileInfo(PChar(SysUtils.ExtractFileExt(AFileName)),
      FILE_ATTRIBUTE_NORMAL, LInfo, SizeOf(TSHFileInfo),
        IfThen(ASmall, SHGFI_SMALLICON, SHGFI_LARGEICON) or
          SHGFI_ICON or SHGFI_USEFILEATTRIBUTES);
    Result := LInfo.HIcon;
  end;
end;
Die Funktion gibt das Icon-Handle von jeder beliebigen Datei zurück - wenn die Datei keines besitzt, wird eben das Standard-Windows-Icon geholt. Läuft bei mir auf D2009, sollte aber auch auf anderen laufen ...
Wenn ASmall true ist gibt es an, dass kleine Icons geholt werden (16x16), bei false große (32x32). Warum Windows das so komisch macht und man keine Chance hat an evtl. vorhandene andere Größen ran zu kommen weiß ich net

Ich hoffe das läuft und ist das, was du wolltest

PS: Die Unit Math kann raus, wenn man das "IfThen" umgeht.
Chris
Die Erfahrung ist ein strenger Schulmeister: Sie prüft uns, bevor sie uns lehrt.
  Mit Zitat antworten Zitat