How do I Get Internet Explorer’s Favorites

Accessing Internet Explorer favorites is not hard since they are nothing more than files and folders. All you have to basically do is find the IE Favorites folder, then read it’s structure and file list. Once this is done you will need to read the URL that’s in each of the files. Sounds easy? You can always use the code below… ;->

function GetIEFavorites(const Path: string): TStrings;
var
  Buffer: array[0..2047] of Char;
  iFound: Integer;
  Dir, FileName, Path: string;
  SearchRec: TSearchRec;
  Links: TStrings;
begin
  Links := TStringList.Create;
  // Get all file names in the favourites path
  Path  := FavPath + '*.url';
  Dir   := ExtractFilepath(Path);
  iFound := FindFirst(Path, faAnyFile, searchrec);
  while iFound = 0 do begin
    // Get now URLs from files
    Setstring(FileName, Buffer, GetPrivateProfilestring('InternetShortcut',
      PChar('URL'), nil, Buffer, SizeOf(Buffer), PChar(Dir + SearchRec.Name)));
    Links.Add(FileName);
    iFound := FindNext(SearchRec);
  end;
  // Find subfolders
  iFound := FindFirst(Dir + '*.*', faAnyFile, searchrec);
  while iFound = 0 do begin
    if ((SearchRec.Attr and faDirectory) > 0) and (SearchRec.Name[1] <> '.') then
      Links.Addstrings(GetIEFavorites(dir + '' + SearchRec.Name));
    iFound := FindNext(searchrec);
  end;
  FindClose(SearchRec);
  Result := Links;
end;
...
procedure FreePidl(pIDL: PItemIDList);
var
  Allocator: IMalloc;
begin
  if Succeeded(SHGetMalloc(Allocator)) then begin
    Allocator.Free(pIDL);
  {$ifdef VER100}
    Allocator.Release;
  {$endif}
  end;
end;
...
var
  FavPath: array[0..MAX_PATH] of Char;
  pIDL   : PItemIDList;
begin
  if Succeeded(ShGetSpecialFolderLocation(Handle, CSIDL_FAVORITES, pIDL)) then begin
    if ShGetPathfromIDList(pIDL, FavPath) then
      ListBox1.Items := GetIEFavourites(StrPas(FavPath));
    // We are responsible for freeing the PItemIDList pointer with the
    // Shell's IMalloc interface
    FreePIDL(pIDL);
  end;
end;

Tags: , , , , , , , , , , , , , , , , , , , , , , , ,

No Comments Yet

You can be the first to comment!

Leave a comment

OpenID Login

Standard Login