Winapi:以编程方式将字符串作为字符串以编程方式获取特殊文件夹的路径

时间:2014-10-08 18:29:28

标签: winapi clsid

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

提前谢谢。

1 个答案:

答案 0 :(得分: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);
}