代码改变世界

Windows 7 新特性 Shell Library 编程接口介绍

2009-09-04 12:53  Jialiang  阅读(2786)  评论(2编辑  收藏  举报


下文所用到的示例代码来源于
微软一站式开发技术框架解决方案。你可以通过http://cfx.codeplex.com/Release/ProjectReleases.aspx下载到Windows 7 Shell Library相关的sample。其中包含C++、C#、VB.NET对Shell Library操作的示例代码:CppWin7ShellLibrary, C#Win7ShellLibrary, VBWin7ShellLibrary。

 

为了帮助用户更加有效地对硬盘上的文件进行管理,Windows 7中引入了新的文件管理方式:库(Library)。库自然演化自以往操作系统中My Documents 文件夹这个概念。有了库,我们就可以将多个相关的文件夹组织到同一个库下,从而更快更便捷地管理和搜索数据。

image

 

创建Windows Shell Library

Windows 7提供了SHCreateLibrary API用来创建一个Shell Library:

C++ CreateShellLibrary

 

/////////////////////////////////////////////////////////////////////
// Create a shell library.
// 

using (ShellLibrary library = new ShellLibrary(libraryName, true))
{
}


管理Windows Shell Library

你可以通过调用SHShowManageLibraryUI API显示出Windows 标准的Shell Library管理对话框。值得注意的是,在调用SHShowManageLibraryUI前请确保 shell library没有被以可写方式打开。否则在SHShowManageLibraryUI中对shell library的修改将无法被保存。

image

C++ ShowManageLibraryUI


C# ShowManageLibraryUI


向Shell Library中添加文件夹
SHAddFolderPathToLibrary可用来向指定的Shell Library中添加文件夹。

C++ AddFolderToShellLibrary

 

C# AddFolderToShellLibrary


枚举Shell Library中的文件夹
IShellLibrary::GetFolders可用来得到Shell Library中的文件夹。

C++ ListFoldersInShellLibrary


C# ListFoldersInShellLibrary

 
删除一个Shell Library

C++ DeleteShellLibrary


C# DeleteShellLibrary


更多关于Windows 7 Shell Library的操作请参见CppWin7ShellLibrary, CSWin7ShellLibrary和VBWin7ShellLibrary示例。