我知道如何从IE获取收藏,但我如何访问Firefox的书签?
以下是我检索IE收藏夹的代码:
uses
ShlObj, ActiveX;
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;
// find Subfolders
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 FreePidl(pidl: PItemIDList);
var
allocator: IMalloc;
begin
if Succeeded(SHGetMalloc(allocator)) then
begin
allocator.Free(pidl);
{$IFDEF VER100}
allocator.Release;
{$ENDIF}
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
pidl: PItemIDList;
FavPath: array[0..MAX_PATH] of Char;
begin
if Succeeded(ShGetSpecialFolderLocation(Handle, CSIDL_FAVORITES, pidl)) then
begin
if ShGetPathfromIDList(pidl, FavPath) then
ListBox1.Items := GetIEFavourites(StrPas(FavPath));
// The calling application is responsible for freeing the PItemIDList-pointer
// with the Shell's IMalloc interface
FreePIDL(pidl);
end;
end;
感谢。
答案 0 :(得分:2)
收藏夹保存在配置文件夹中的“places.sqlite”中。它们位于表格 moz_bookmarks 中。它们引用表 moz_places 中的条目及其字段 fk 。获取sqlite作为dll和delphi绑定,如this one。
使用 SQLite3_Open 打开数据库并使用 SQLite3_Exec 发送普通的sql语句来访问数据,例如
SELECT * FROM moz_bookmarks;
不幸的是,firefox锁定了places.sqlite,这意味着你必须先复制它(普通文件副本)。处理完副本后,您可以将其删除。
答案 1 :(得分:1)
来自MetaProduct的TBookmarks组件......它的价格是75.00美元: http://www.metaproducts.com/mp/TBookmarks_component.htm
引用他们的网站:
Borland Delphi 2,3,4,5,6,7,2005,2006,2007,2009。
新!支持FireFox 3,Safari和Google Chrome书签!
MetaProducts TBookmarks是一个Delphi 2 - 7,2005-2009组件,可帮助您显示MS Internet Explorer收藏夹(4.0 - 8.0,)MSN Explorer,Opera Hotlists(3.0 - 9.0)和Netscape,Safari,Chrome,FireFox和菜单中的Mozilla书签(2.0 - 8.0)。
只需将TBookmarks组件放在表单上,然后分配其Menu属性和OnURL事件即可。将Enabled设置为True可收集指定TMenuItem中的所有书签信息。
您还可以使用TTreeView组件使TBookmarks自动填充条目。
答案 2 :(得分:0)
好吧,Firefox书签是存储在的HTML文件
<WindowsUserPath
&gt; \ Application Data \ Mozilla \ Firefox \ Profiles \
SinanÜnür说,<aRamdonProfileName
&gt; \ bookmark.htm。
所以你需要获取mozilla配置文件目录并检索文件夹 在那里的名字。
之后你需要解析html文件.....
所以AFAIK,不,没有API直接获取FF书签。