65.9K
CodeProject 正在变化。 阅读更多。
Home

枚举 Internet Explorer 的收藏夹

starIconstarIconstarIconemptyStarIconemptyStarIcon

3.00/5 (3投票s)

2000 年 9 月 10 日

viewsIcon

99433

downloadIcon

1400

一篇关于从 Internet Explorer 枚举用户收藏夹列表的文章

  • 下载源代码文件 - 24 Kb
  • 下载演示项目 - 21 Kb
  • 引言

    最近我正在做一个项目,需要获取 Internet Explorer 中的收藏夹(也称为书签)列表。微软提供了一个 API,可以将所有收藏夹转储到一个遵循 Netscape 书签格式的文本文件中。但该文本文件不能满足我的需求。首先,我需要一个解析器来提取该文件中的所有信息;其次,IShellUIHelper 接口上的 ImportExportFavorites 方法调用需要用户选择是否要转储收藏夹。

    这促使我寻找替代方案。答案是使用 Shell 编程 API。收藏夹存储在用户的配置文件中,作为常规文件夹和文件。因此,我可以使用文件属性来提取我需要的所有信息,即创建、修改和上次访问日期、URL、收藏夹的描述。在搜索过程中,我发现了一篇微软的文章,介绍了如何开始使用这种方法。在参考了该文章和一些我自己的想法后,我创建了这个 COM 对象 IFavoriteEngine,它可以为我解决问题。

    该实现展示了 Shell API 和一些 COM 概念的使用,并准备了系统上收藏夹的完整枚举。这个 COM 对象只有两种方法:

    LoadFavorites此方法访问系统上的所有收藏夹并准备枚举列表。
    GetFavoritesObjList 此方法返回由 LoadFavorites 方法调用创建的枚举。

    GetFavoritesObjList 返回另一个 COM 对象 IFavoritesObjList。该对象有自己的方法,可以调用这些方法来提取所有信息。该对象返回另一个 COM 对象 IFavoriteObject。这是包含详细信息(例如日期、描述等)的对象。

    SHGetSpecialFolderLocation API 用于获取用户配置文件中的所有收藏夹列表。此调用的第二个参数是 CSIDL_FAVORITES,表示它应该从用户配置文件中获取所有收藏夹。为了获取收藏夹文件和文件夹的其他属性,使用了 Win32 API GetFileAttributesEx

    我包含了一个简单的 Win32 控制台应用程序,以演示如何使用 IFavoritesEngine COM 对象来获取系统上的所有收藏夹。该代码使用 VC++6 (SP4) 在 Windows 2000, Adv Server (SP1) 上编写和编译。我只测试了调试版本。因此,如果您发现项目发布配置存在任何问题,请告诉我。

    © . All rights reserved.