【IT168 专稿】在上文中,我们简要地介绍了Windows 7所引入的新的文件管理方式:库(Library)。介绍了库的缘起,库的表现和实质。那么相信大家会接着问:如何对库进行操作呢?如何让我们自己开发设计的应用程序支持库这一新的文件管理方式?或者是如何让我们的应用程序更好地利用这一新的文件管理特性?
对库进行编程
在Windows 7操作系统中,我们可以手动地对库进行管理,进行库的创建,文件夹的添加和删除等等。但是作为程序员,我们更加关心的是如何以编程的方式对库进行操作。为了帮助我们在应用程序中使用库这种新的文件管理方式,Windows 7为我们提供了一组API用于库的编程开发。
图1 与库相关的API
其中,位于最顶层的用户界面API包括我们之前提到的通用文件对话框CFD,导航栏树形控件等等。使用新的用户界面API,我们可以调用支持库的新版通用文件对话框,从而让我们的应用程序在打开或者保存文件时,可以支持库这一新的特性。
{
string strPath;
// 创建新版的通用保存文件对话框
System.Windows.Forms.SaveFileDialog _fd = new System.Windows.Forms.SaveFileDialog();
// 设置对话框的各种属性
fd.Title = "请选择文件保存的位置";
fd.FileName = "[选择文件夹…-]";
fd.Filter = "Library|no.files"; // 设置可选项,只能选择Library
// 显示对话框
if (_fd.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
// 获取用户选择的结果
string dir_path = System.IO.Path.GetDirectoryName(_fd.FileName);
if (dir_path != null && dir_path.Length > 0)
{
// 传递用户选择的路径
strPath = dir_path;
}
}
// 利用用户选择的路径进行后继处理
}
通过使用新版的通用文件对话框CFD,我们可以轻松的让我们的应用程序支持库这一新的文件管理方式。
除了用户界面API,我们重点关注的是位于中间的Shell API。利用Shell API,我们可以对库进行管理,实际上就是通过Shell API修改.library-ms这个文件,当这个文件被修改后,系统会读取这个文件的信息对库进行重新组织。这组Shell API包装了多个COM对象,利用这些对象,我们可以对库进行操作,其中几个比较常用的对象是:
•IShellLink 这个对象代表到文件、 文件夹,或可执行文件的一个链接
•IShellFolder 对象实际上代表着一个文件夹对象,我们可以通过遍历IShellFolder对象,访问这个文件夹下的所有内容,检索文件夹中的项目的显示名称、 分析文件夹的显示名称和获取文件夹下的项目 ID 列表等等
•IShellLibrary是Windows 7新引入的一个对象,它与一个库相对应。通过这个对象,我们可以对库进行各种操作。
另外,Shell API也提供了多个辅助函数用于对库进行操作,比如:
•创建库
•打开一个已经存在的库
•添加文件夹到库中或者删除一个库中的文件夹
•获得一个库的文件夹列表
•获得或者设置库的各种选项
•获得或者设置库的图标
通过这些Shell API,我们完全可以操作系统中的库,对其进行操作和管理。