Windows API 是否提供任何方法来获取特殊文件夹路径(即我的文档),将其 CLSID 作为字符串(即 ::{450d8fba-ad25-11d0-98a8-0800361b1103})?这可以以任何方式完成吗?此外,还应使用 Windows XP 下支持的功能。
先感谢您。
您需要的基本 API 是SHParseDisplayName
. 这将采用::{GUID}
格式路径并将其转换为 PIDL。
如果 PIDL 然后具有字符串形式(如您的示例那样,因为它解析为 Documents 文件夹),您可以使用SHGetPathFromIDList
它来转换它。
LPITEMIDLIST pidl;
if (SUCCEEDED(SHParseDisplayName(L"::{450d8fba-ad25-11d0-98a8-0800361b1103}", nullptr, &pidl, 0, nullptr)))
{
wchar_t wchPath[MAX_PATH];
if (SUCCEEDED(SHGetPathFromIDList(pidl, wchPath)))
{
// string form of path is now in wchPath
}
ILFree(pidl);
}