1 Windows系统获取桌面路径

可使用以下代码获取桌面路径:

#include <iostream>
#include <string>

#include<Windows.h>
#include "shlobj.h" 

std::string GetDesktopPath()
{
    LPITEMIDLIST pidl;
    LPMALLOC pShellMalloc;
    char szDir[MAX_PATH];

    if (SUCCEEDED(SHGetMalloc(&pShellMalloc)))
    {
        if (SUCCEEDED(SHGetSpecialFolderLocation(NULL, CSIDL_DESKTOP, &pidl))) 
        {
            SHGetPathFromIDListA(pidl, szDir);
            pShellMalloc->Free(pidl);
        }
        pShellMalloc->Release();
    }

    return std::string(szDir);
}


int main()
{
    std::string desketop_path = GetDesktopPath();

    std::cout << "desketop path : " << GetDesktopPath() << std::endl;

    return 0;
}

其中,CSIDL_DESKTOP对应系统中桌面的路径,我们也可以通过SHGetSpecialFolderLocation函数获取其他的路径。

例如:

  • CSIDL_BITBUCKET:回收站
  • CSIDL_CONTROLS:控制面板
  • CSIDL_DESKTOP:桌面
  • CSIDL_DESKTOPDIRECTORY
  • CSIDL_DRIVES:我的电脑
  • CSIDL_PERSONAL:我的文档
  • CSIDL_RECENT:最近打开文档
  • CSIDL_STARTUP:启动目录