如何在用户创建的库中打开 Windows 资源管理器?
How to open a Windows Explorer in a user-created library?
最终,我希望能够在 C++ 代码中为文件对话框执行此操作,但能够从命令行执行此操作将是一个好的开始...
对于 'standard' 库 - 文档、音乐、图片和视频 - 我知道有一些特殊的 'shell:' 名称可以使用(列表 here)。
因此,例如,
explorer.exe shell:PicturesLibrary
将直接在图片库视图中打开资源管理器。
但是我已经创建了一个新库,比如说 'My Library',但我找不到任何方法可以直接在 'My Library' 中打开资源管理器。到目前为止我能做的最好的就是打开 'shell:Libraries' 并强制用户从那里下降。
有人知道吗?
此控制台应用程序首先使用 SHGetKnownFolderPath 获取用户库文件夹的路径。然后它使用 ShellExecute 来 "explore" 这个目录中的 "My Library" 库文件。
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%\Microsoft\Windows\Libraries\My Library.library-ms"
最终,我希望能够在 C++ 代码中为文件对话框执行此操作,但能够从命令行执行此操作将是一个好的开始...
对于 'standard' 库 - 文档、音乐、图片和视频 - 我知道有一些特殊的 'shell:' 名称可以使用(列表 here)。
因此,例如,
explorer.exe shell:PicturesLibrary
将直接在图片库视图中打开资源管理器。
但是我已经创建了一个新库,比如说 'My Library',但我找不到任何方法可以直接在 'My Library' 中打开资源管理器。到目前为止我能做的最好的就是打开 'shell:Libraries' 并强制用户从那里下降。
有人知道吗?
此控制台应用程序首先使用 SHGetKnownFolderPath 获取用户库文件夹的路径。然后它使用 ShellExecute 来 "explore" 这个目录中的 "My Library" 库文件。
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%\Microsoft\Windows\Libraries\My Library.library-ms"