Windows 7 新特性 Shell Library 编程接口介绍
2009-09-04 00:00:00 来源:WEB开发网下文所用到的示例代码来源于 微软一站式开发技术框架解决方案
。你可以通过 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 文件夹这个概念。有了库,我们就可以将多个相关的文件夹组织到同一个库下,从而更快更便捷地管理和搜索数据。
创建Windows Shell Library
Windows 7提供了SHCreateLibrary API用来创建一个Shell Library:
C++ CreateShellLibrary
/**//*!
* Create a new shell library under the user's Libraries folder. If a library
* with the same name already exists, the new one overrides the existing one.
*
* \param pwszLibraryName
* The name of the shell library to be created.
*/
BOOL CreateShellLibrary(LPWSTR pwszLibraryName)
{
/**//////////////////////////////////////////////////////////////////////////
// Create the shell library COM object.
//
IShellLibrary* pShellLib = NULL;
HRESULT hr = SHCreateLibrary(IID_PPV_ARGS(&pShellLib));
if (FAILED(hr))
{
_tprintf(_T("SHCreateLibrary failed to create the shell library ") \
_T("COM object w/err 0x%08lx\n"), hr);
return FALSE;
}
/**/////////////////////////////////////////////////////////////////////////
// Save the new library under the user's Libraries folder.
//
IShellItem* pSavedTo = NULL;
hr = pShellLib->SaveInKnownFolder(FOLDERID_UsersLibraries,
pwszLibraryName, LSF_OVERRIDEEXISTING, &pSavedTo);
if (FAILED(hr))
{
_tprintf(_T("IShellLibrary::SaveInKnownFolder failed to save the ") \
_T("library w/err 0x%08lx\n"), hr);
return FALSE;
}
/**//////////////////////////////////////////////////////////////////////////
// Clean up.
//
if (pShellLib != NULL)
pShellLib->Release();
if (pSavedTo != NULL)
pSavedTo->Release();
return TRUE;
}
/**//////////////////////////////////////////////////////////////////////
// Create a shell library.
//
using (ShellLibrary library = new ShellLibrary(libraryName, true))
{
}
更多精彩
赞助商链接