Einzelnen Beitrag anzeigen

stho

Registriert seit: 16. Sep 2009
Ort: 127.0.0.1
288 Beiträge
 
Delphi 2007 Professional
 
#13

Re: Extrahieren des ICONs von BELIEBIGEM Dateityp?

  Alt 26. Mär 2010, 09:13
Zitat von Deep-Sea:
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.
ich bedanke mich vielmals für deine hilfe ^^
Ich kann den Code leider erst heute abend ausprobieren. (bin an der arbeit...)
Ich melde mich dann aber wenn ich es damit geschafft habe

  Mit Zitat antworten Zitat