Home » Tipps & Tricks » System » Systemfunktionen » Favoriten auslesen
Favoriten auslesen
Gibt es eine Möglichkeit, die Favoriten mit Name und Url in einem ListView darzustellen?Ja, das geht mit folgender Methode.Bemerke: Das ListView muss 2 Spalten haben. Am Besten stellst du die Eigenschaft ViewStyle auf vsReport, damit die Spalten auch zu sehen sind.
uses inifiles, shlobj; procedure GetFavUrls(UrlList: TListItems); function GetFavPath: string; var FavPath: Array[0..MAX_PATH] of Char; FavItem: PItemIdList; begin SHGetSpecialFolderLocation(Form1.Handle, CSIDL_FAVORITES , FavItem); SHGetPathFromIDList(FavItem, FavPath); result := FavPath; end; function GetUrl(s: string): string; var ini: TInifile; begin ini := TIniFile.create(s); try result := ini.ReadString('InternetShortcut', 'URL', ''); finally ini.free; end; end; procedure GetFavUrlPath(Folder: String); var SR: TSearchRec; begin if Folder[length(Folder)] <> '' then Folder := Folder + ''; if FindFirst(Folder + '*.Url', faAnyFile or faDirectory, SR) = 0 then try repeat if (SR.Name '.') and (SR.Name '..') and (SR.Attr faDirectory) then with UrlList.add do begin Caption := (copy(SR.name,1,pos('.url',Sr.Name) - 1)); SubItems.add(GetUrl(Folder + Sr.Name)); end; until FindNext (SR) 0; finally FindClose(SR); end; if FindFirst(Folder + '*.*', faDirectory, SR) = 0 then try repeat if (SR.Name '.') and (SR.Name '..') and (SR.Attr = faDirectory) then GetFavUrlPath(Folder + SR.Name); until FindNext (SR) 0; finally FindClose(SR); end; end; begin GetFavUrlPath(GetFavPath); end;
Der Aufruf erfolgt dann so:
procedure TForm1.Button1Click(Sender: TObject); begin GetFavUrls(ListView1.Items); end;