2

Windows API 是否提供任何方法来获取特殊文件夹路径(即我的文档),将其 CLSID 作为字符串(即 ::{450d8fba-ad25-11d0-98a8-0800361b1103})?这可以以任何方式完成吗?此外,还应使用 Windows XP 下支持的功能。

先感谢您。

4

1 回答 1

4

您需要的基本 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);
}
于 2014-10-08T19:47:10.550 回答