获取我的文档的路径

Sma*_*ery 16 c++ mfc visual-c++

从Visual C++,如何获取当前用户的My Documents文件夹的路径?

编辑:

我有这个:

TCHAR my_documents[MAX_PATH];
HRESULT result = SHGetFolderPath(NULL, CSIDL_MYDOCUMENTS, NULL, SHGFP_TYPE_CURRENT, my_documents);
Run Code Online (Sandbox Code Playgroud)

然而,result回来的价值是E_INVALIDARG.有什么想法可能是这样吗?

Jer*_*fin 21

这取决于您需要兼容的系统的年龄.对于旧系统,有SHGetSpecialFolderPath.对于更新的系统,有SHGetFolderPath.从Vista开始,有SHGetKnownFolderPath.

编辑:您想要使用__CODE__,而不是__CODE__.演示代码,至少在我的机器上有效:

#include <windows.h>
#include <iostream>
#include <shlobj.h>

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

int main() { 
    CHAR my_documents[MAX_PATH];
    HRESULT result = SHGetFolderPath(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;
}
Run Code Online (Sandbox Code Playgroud)

  • 仅供参考,直接来自ShlObj.h:#define CSIDL_MYDOCUMENTS CSIDL_PERSONAL //个人只是我的文件的愚蠢名称 (2认同)

Jam*_*lis 9

使用SHGetFolderPathWindows API函数和要求CSIDL_MYDOCUMENTS.