Vamos falar neste QUICK TIPS, como pegar os Favoritos do IE. Como todos sabem e possível salvar nos navegadores os link das sites que você acha interessante como favoritos. Bem o que muita gente talvez não saiba e que você pode recuperar este lista através do Delphi. O mais legal é que a API do Windows, que não é pequena já nos fornece um mecanismo para isso.
Dê uses em ShlObj;
Declare a seguinte Function
function GetIEFavoritos(const favpath: string):TStrings;
var
searchrec:TSearchrec;
S:TStrings;
path,dir,filename:String;
Buffer: array[0..2047] of Char;
found:Integer;
begin
S:=TStringList.Create;
path:=FavPath+'\*.url';
dir:=ExtractFilepath(path);
found:=FindFirst(path,faAnyFile,searchrec);
while found=0 do
begin
SetString(filename, Buffer, GetPrivateProfileString('InternetShortcut', PChar('URL'), NIL, Buffer, SizeOf(Buffer), PChar(dir+searchrec.Name)));
S.Add(filename);
found:=FindNext(searchrec);
end;
found:=FindFirst(dir+'\*.*',faAnyFile,searchrec);
while found=0 do begin
if ((searchrec.Attr and faDirectory) > 0) and (searchrec.Name[1]<>'.') then
S.AddStrings(GetIEFavoritos(dir+'\'+searchrec.name));
found:=FindNext(searchrec);
end;
FindClose(searchrec);
Result:=S;
end;
A variável searchrec é um TSearchRec que é uma classe do Delphi para ler todos os arquivos a partir de uma determinada máscara. Serve basicamente para fazer buscas atrás de um arquivo qualquer. Já faAnyFile é a constante usada pelo Windows para definir que o que você está procurando... existem outras como faDirectory, aArchive , etc.
O retorno de FindFirst/FindNext é 0 quando um arquivo é encontrado. Caso contrário, o retorno é uma mensagem de erro. TSearchRec pode retornar também diretórios, se você quiser fazer uma busca incluindo sub-diretórios.
No Clique de um botão, por exemplo, coloque o código abaixo
var pidl: PItemIDList;
FavPath: array[0..MAX_PATH] of char;
begin
SHGetSpecialFolderLocation(Handle, CSIDL_FAVORITES, pidl);
SHGetPathFromIDList(pidl, favpath);
ListBox1.Items:= GetIEFavoritos (StrPas(FavPath));
End;
Até a próxima.
Wesley Y