Einzelnen Beitrag anzeigen

kingflo

Registriert seit: 21. Jun 2004
Ort: Hamburg
502 Beiträge
 
Delphi 7 Professional
 
#2

Re: Icon aus beliebiger Datei extrahieren (z.B. *.lnk)

  Alt 20. Okt 2005, 16:08
Also bei exe funzt dieser code bei anderen sachen hab ichs noch net getestet und kann ich hier leider auch nicht versuchs einfach...


Delphi-Quellcode:
function GetDefaultIcon(Filename: Widestring; IconTyp: Cardinal = 2): HIcon;
var
  Info: TSHFileInfoW;
  Flags: Cardinal;
  ext: WideString;
  idx: word;
begin
  //Result := Ticon.Create;
  ext := WideExtractFileExt(Filename);
  idx := 0;
  if WideFileExists(Filename) then
  begin
    result := Tnt_ExtractAssociatedIconW(HInstance, PWideChar(Filename), idx);
    exit;
  end;
  {if ext = '.ico' then
  begin
    result := LoadFromFile(Filename);
    exit;
  end;}


  begin {DW 1.4}
    Flags := 0;
    case IconTyp of
      0: Flags := SHGFI_ICON or SHGFI_SMALLICON or SHGFI_USEFILEATTRIBUTES;
      1: Flags := SHGFI_ICON or SHGFI_LARGEICON or SHGFI_USEFILEATTRIBUTES;
      2: Flags := SHGFI_ICON or SHGFI_SHELLICONSIZE or SHGFI_USEFILEATTRIBUTES;
    end;
    Tnt_SHGetFileInfoW(PWideChar(ext), FILE_ATTRIBUTE_NORMAL, Info, SizeOf(TSHFileInfo), Flags);
    Result := Info.hIcon;
  end;
end;

{TntWiindows.pas}

function Tnt_ExtractAssociatedIconW(hInst: HINST; lpIconPath: PWideChar;
  var lpiIcon: Word): HICON;
begin
  if Win32PlatformIsUnicode then
    Result := ExtractAssociatedIconW{TNT-ALLOW ExtractAssociatedIconW}(hInst, lpIconPath, lpiIcon)
  else
    Result := ExtractAssociatedIconA{TNT-ALLOW ExtractAssociatedIconA}(hInst,
      PAnsiChar(AnsiString(lpIconPath)), lpiIcon)
end;
Florian Gilde
  Mit Zitat antworten Zitat