От Visual C++, как я получаю путь к папке My Documents текущего пользователя?
Править:
У меня есть это:
TCHAR my_documents[MAX_PATH];
HRESULT result = SHGetFolderPath(NULL, CSIDL_MYDOCUMENTS, NULL, SHGFP_TYPE_CURRENT, my_documents);
Однако result
возвращается со значением E_INVALIDARG
. Какие-либо мысли относительно того, почему это могло бы быть?
Это зависит от возраста системы, с которой вам нужна совместимость. Для старых систем есть 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;
}
Используйте функцию SHGetFolderPath
Windows API и запросите CSIDL_MYDOCUMENTS
.