Как программно найти папку «Сохраненные игры» в C / C ++? - PullRequest
0 голосов
/ 03 февраля 2019

Я пишу игру.Я планирую хранить сохранения в каталоге «сохраненных игр».

Как программно найти местоположение папки сохраненных игр?

Требуется работа на неанглийских Windows.Такие хаки, как %USERPROFILE%\Saved Games, не подходят.

1 Ответ

0 голосов
/ 03 февраля 2019

Каталог сохраненных игр можно найти с помощью функции 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;
}
...