获得收藏夹的内容
function GetIEFavourites(const favpath: string):TStrings; 
var 
  searchrec:TSearchrec; 
  str:TStrings; 
  path,dir,filename:String; 
  Buffer: array[0..2047] of Char; 
  found:Integer; 
begin 
 str:=TStringList.Create; 
 //Get all file names in the favourites path 
 path:=FavPath+'\*.url'; 
 dir:=ExtractFilepath(path); 
 found:=FindFirst(path,faAnyFile,searchrec); 
 while found=0 do begin 
  //Get now URLs from files in variable files 
  SetString(filename, Buffer, GetPrivateProfileString('InternetShortcut', 
  PChar('URL'), NIL, Buffer, SizeOf(Buffer), PChar(dir+searchrec.Name))); 
  str.Add(filename); 
  found:=FindNext(searchrec); 
 end; 
 //unterordner finden 
 found:=FindFirst(dir+'\*.*',faAnyFile,searchrec); 
 while found=0 do begin 
  if ((searchrec.Attr and faDirectory) > 0) and (searchrec.Name[1]<>'.') then 
  str.AddStrings(GetIEFavourites(dir+'\'+searchrec.name)); 
  found:=FindNext(searchrec); 
 end; 
 FindClose(searchrec); 
 Result:=str; 
end; 
 
procedure TForm1.Button1Click(Sender: TObject); 
var pidl: PItemIDList; 
  FavPath: array[0..MAX_PATH] of char; 
begin 
 SHGetSpecialFolderLocation(Handle, CSIDL_FAVORITES, pidl); 
 SHGetPathFromIDList(pidl, favpath); 
 ListBox1.Items:=GetIEFavourites(StrPas(FavPath)); 
end; 

解决方案 »

  1.   

    收藏夹的位置存储在注册表中KEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders下的“Favorites”项中。
      

  2.   

    Asus(风月无边),我的uses里边应该增加些什么才能运行你的例程?(PItemIDList在哪儿?)xclxd(小虾),知道win2000中的位置吗?
      

  3.   

    在Win2000中也是这个位置,你把注册表“Favorites”项中的数据就是收藏夹在硬盘中的物理位置。
      

  4.   

    procedure TForm1.Button1Click(Sender: TObject);
    var
      FU:IShellUIHelper;
      F:TShellWindows;
      astr:Widestring;
    begin
      FU:=CoShellUIHelper.Create;
      FU.ImportExportFavorites(False,astr);
    end;须要首先再uses中引用shdocvw