Если не получается так, то попробуй эдак:
| Код | uses ShlObj, ActiveX...;
function SetPath(const Value: string) : PItemIDList; var P: PWideChar; Flags, NumChars: LongWord; begin Result:=nil; NumChars := Length(Value); Flags := 0; P := StringToOleStr(Value); if not Succeeded(FIDesktopFolder.ParseDisplayName(Application.Handle,nil,P,NumChars,Result,Flags)) then result:=nil; end;
function GetShellImage(Path : String; Large, Open: Boolean): integer; var FileInfo: TSHFileInfo; Flags: Integer; DeskTopISF: IShellFolder; PathPidl: PItemIDList; begin Result := 0; FillChar(FileInfo, SizeOf(FileInfo), #0); Flags := SHGFI_PIDL or SHGFI_SYSICONINDEX or SHGFI_ICON; if Open then Flags := Flags or SHGFI_OPENICON; if Large then Flags := Flags or SHGFI_LARGEICON else Flags := Flags or SHGFI_SMALLICON; PathPidl:=SetPath(Path); if PathPidl<>nil then begin SHGetFileInfo(PChar(PathPidl), 0, FileInfo, SizeOf(FileInfo), Flags); Result:=FileInfo.hIcon; end; end;
| |