c++获取Windows“我的文档”路径

180it 2020-10-11 AM 2400℃ 0条
#include <windows.h>
#include <iostream>
#include <shlobj.h>

#pragma comment(lib, "shell32.lib")

int main() { 
    CHAR my_documents[MAX_PATH];
    HRESULT result = SHGetFolderPathA(NULL, CSIDL_PERSONAL, NULL, SHGFP_TYPE_CURRENT, my_documents);

    if (result != S_OK)
        std::cout << "Error: " << result << "\n";
    else
        std::cout << "Path: " << my_documents << "\n";
    return 0;
}

之前用网上的代码最后得到总是一个十六进制的数字。。因为我的环境支持Unicode,一些Windows接口默认是宽字符类型的,比如 SHGetFolderPath 默认是 SHGetFolderPathW,而我这需要ascii,所以应该用 SHGetFolderPathA。
CSIDL_PERSONAL 表示“我的文档”,你还可以换其他的参数来获取Windows下的特殊目录。

CSIDL_ADMINTOOLS
CSIDL_APPDATA
CSIDL_COMMON_ADMINTOOLS
CSIDL_COMMON_APPDATA
CSIDL_COMMON_DOCUMENTS
CSIDL_COOKIES
CSIDL_FLAG_CREATE
CSIDL_FLAG_DONT_VERIFY
CSIDL_HISTORY
CSIDL_INTERNET_CACHE
CSIDL_LOCAL_APPDATA
CSIDL_MYPICTURES
CSIDL_PERSONAL
CSIDL_PROGRAM_FILES
CSIDL_PROGRAM_FILES_COMMON
CSIDL_SYSTEM
CSIDL_WINDOWS

更多 https://docs.microsoft.com/en-us/windows/win32/shell/csidl

支付宝打赏支付宝打赏 微信打赏微信打赏

如果文章或资源对您有帮助,欢迎打赏作者。一路走来,感谢有您!

标签: none

c++获取Windows“我的文档”路径