技术开发 频道

VS2010与Windows7共舞:对库进行编程

  【IT168 专稿】在上文中,我们简要地介绍了Windows 7所引入的新的文件管理方式:库(Library)。介绍了库的缘起,库的表现和实质。那么相信大家会接着问:如何对库进行操作呢?如何让我们自己开发设计的应用程序支持库这一新的文件管理方式?或者是如何让我们的应用程序更好地利用这一新的文件管理特性?

  对库进行编程

  在Windows 7操作系统中,我们可以手动地对库进行管理,进行库的创建,文件夹的添加和删除等等。但是作为程序员,我们更加关心的是如何以编程的方式对库进行操作。为了帮助我们在应用程序中使用库这种新的文件管理方式,Windows 7为我们提供了一组API用于库的编程开发。

  图1  与库相关的API

  其中,位于最顶层的用户界面API包括我们之前提到的通用文件对话框CFD,导航栏树形控件等等。使用新的用户界面API,我们可以调用支持库的新版通用文件对话框,从而让我们的应用程序在打开或者保存文件时,可以支持库这一新的特性。 

 

private void button1_Click(object sender, EventArgs e)

      {

          
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,我们完全可以操作系统中的库,对其进行操作和管理。

0
相关文章