Получите путь к Моим Документам

От Visual C++, как я получаю путь к папке My Documents текущего пользователя?

Править:

У меня есть это:

TCHAR my_documents[MAX_PATH];
HRESULT result = SHGetFolderPath(NULL, CSIDL_MYDOCUMENTS, NULL, SHGFP_TYPE_CURRENT, my_documents);

Однако result возвращается со значением E_INVALIDARG. Какие-либо мысли относительно того, почему это могло бы быть?

16
задан Smashery 10 March 2010 в 06:27
поделиться

2 ответа

Это зависит от возраста системы, с которой вам нужна совместимость. Для старых систем есть SHGetSpecialFolderPath . Для более новых систем есть SHGetFolderPath . Начиная с Vista, есть SHGetKnownFolderPath .

Вот демонстрационный код, который работает, по крайней мере, на моей машине:

#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;
}
21
ответ дан 30 November 2019 в 17:15
поделиться

Используйте функцию SHGetFolderPath Windows API и запросите CSIDL_MYDOCUMENTS.

9
ответ дан 30 November 2019 в 17:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: