如何在C / C ++中以编程方式找到“已保存的游戏”文件夹?

时间:2019-02-03 01:50:39

标签: c++ c windows winapi game-development

我正在写游戏。我打算将保存的内容保存在“保存的游戏”目录中。

如何以编程方式找到“已保存的游戏”文件夹的位置?

它需要在非英语Windows上运行。不能选择%USERPROFILE%\Saved Games这样的骇客。

1 个答案:

答案 0 :(得分:10)

“保存的游戏”目录可以使用SHGetKnownFolderPath()功能定位,该功能自Windows Vista和Windows Server 2008起可用。

请注意,FOLDERID_SavedGames参数是C ++引用。替换为&FOLDERID_SavedGames从C代码中调用。

这是第一个网上MSVC的编译器,我能找到成功的测试:

https://rextester.com/l/cpp_online_compiler_visual

#define WINVER 0x0600
#define _WIN32_WINNT 0x0600

#include <stdio.h>
#include <shlobj.h>
#include <objbase.h>

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

int main(void)
{
    PWSTR path = NULL;
    HRESULT r;

    r = SHGetKnownFolderPath(FOLDERID_SavedGames, KF_FLAG_CREATE, NULL, &path);
    if (path != NULL)
    {
        printf("%ls", path);
        CoTaskMemFree(path);
    }

    return 0;
}