如何在用户创建的库中打开 Windows 资源管理器

How to open a Windows Explorer in a user-created library?

本文关键字:Windows 资源管理器 用户 创建      更新时间:2023-10-16

最终,我希望能够在C++代码中为文件对话框执行此操作,但是能够从命令行执行此操作将是一个好的开始...

对于"标准"库 - 文档,音乐,图片和视频 - 我知道有特殊的"shell:"名称有效(在此处列出)。

所以,例如,

explorer.exe shell:PicturesLibrary

将直接在图片库视图中打开资源管理器。

但是我创建了一个新库,比如"我的图书馆"

,我找不到任何直接在"我的图书馆"中打开资源管理器的方法。 到目前为止,我能做的最好的事情就是打开"shell:Libraries"并强制用户从那里下降。

有人知道吗?

此控制台应用首先使用 SHGetKnownFolderPath 获取用户库文件夹的路径。 然后,它使用 ShellExecute 来"浏览"此目录中的"我的库"库文件。

SHGetKnownFolderPath 给出的字符串由 CoTaskMemFree 释放。 另外,SHGetKnownFolderPath没有ANSI版本,所以我只是将所有内容都设置为宽字符显式。

不包括错误检查,因此您可能需要添加它。

#include <Windows.h>
#include <Shellapi.h>
#include <Shlobj.h>
int main() {
    PWSTR libraries_path = NULL;
    SHGetKnownFolderPath(FOLDERID_Libraries, 0, NULL, &libraries_path);
    ShellExecuteW(NULL, L"explore", L"My Library.library-ms",NULL,libraries_path,SW_SHOW);
    CoTaskMemFree(libraries_path);
}

从命令行中,这将执行类似操作:

"%appdata%MicrosoftWindowsLibrariesMy Library.library-ms"