Favoriten auslesen |
|
| System | Win9x, WinNT, Win2000, WinXP, Vista, Win7 |
|---|---|
| Ab Delphi-Version | Delphi 1 |
| Letzte Änderung | 28.09.2010 |
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;