技术开发 频道

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

  利用托管代码操作库

  在上文中,我们介绍了如何利用Shell API在非托管代码中对库进行操作。那么对于托管代码,该如何处理呢?不用担心,微软早为我们提供了相应的解决方案。在Microsoft Windows API Code Pack中,微软封装了很多Native API以提供给.NET程序使用。利用这个程序集,我们可以方便地利用其中封装的各种对象,实现各种本地API功能,使用起来甚至比直接使用API还方便简单。在这里,我们只对跟库相关的对象感兴趣。在Windows API Code Pack中的ShellLibrary对象封装了所有对库的操作,在托管代码中,我们只需要这个对象就可以对库进行操作了。

  为了演示托管代码对库的操作,我们创建一个Visual C#控制台应用程序,然后在项目中添加对Microsoft.WindowsApiCodePack.dll和Microsoft.WindowsApiCodePack.shell.dll的引用。现在,我们就可以使用ShellLibrary对象对库进行各种操作了:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

// 使用ShellLibrary所在的名字空间

using Microsoft.WindowsAPICodePack.Shell;




namespace LibraryDemoCS

{

    
class Program

    {

        
static void Main(string[] args)

        {

            
// 定义库的名字和文件夹路径

            
string strLibName = "MyLib";

            
string strFolderPath = @"C:\";

            
// 创建库并添加文件夹

            
using (ShellLibrary library =new ShellLibrary( strLibName, true))

             {

                  library.Add(strFolderPath);

              }

              
// 加载已经存在的库对对其进行操作

              
using (ShellLibrary lib = ShellLibrary.Load("MyLib", false))

               {

                    
// 添加新的文件夹

                    lib.Add(
@"D:\");

                    
// 设置属性

                     lib.IsPinnedToNavigationPane
= true;

                    
string strDefSaveFolder = @"D:\";

                    
// 设置默认的保存文件夹

                     lib.DefaultSaveFolder
= strDefSaveFolder;

                    
// 循环遍历库中的文件夹

                    
// 找到并显示默认保存文件夹

                    
foreach (ShellFolder folder in lib)

                    {

                        Console.WriteLine(
"\t\t{0} {1}",

                        folder.Name,

                        strDefSaveFolder
== folder.ParsingName ? "DefSaveFolder" : "");

                      }

                  }
                  Console.Read();

               }

           }

}

  在这段代码中,我们简单地利用Windows API Code Pack中的ShellLibrary对象对库进行了操作,实现了库的创建,文件夹的添加,库的各种属性的设置和库所管理的文件夹的遍历等等。我们可以看到,实际上利用托管代码操作库,比非托管代码更加方便和简单。

0
相关文章