프로그래밍/C++
C++ 사용자 Windows의 경로를 가져오기.
Hwan2
2020. 6. 4. 21:16
반응형
SHGetKnownFolderPath()
키워드를 사용하여 원하는 경로를 가져올 수 있습니다.
해당 함수를 사용하려면 <shlobj_core.h> 해더파일을 참조해야 합니다.
사용법
#include <iostream>
#include <shlobj_core.h>
using namespace std;
int main(void) {
PWSTR path = NULL;
SHGetKnownFolderPath(FOLDERID_Desktop, 0, NULL, &path); //바탕화면 경로 가져오기.
wprintf(L"%s\n", path);
CoTaskMemFree(path);
SHGetKnownFolderPath(FOLDERID_Documents, 0, NULL, &path); //문서 경로 가져오기.
wprintf(L"%s\n", path);
CoTaskMemFree(path);
return 0;
}
실행결과
SHGetKnownFolderPath 구조체
HRESULT SHGetKnownFolderPath(
REFKNOWNFOLDERID rfid,
DWORD dwFlags,
HANDLE hToken,
PWSTR *ppszPath
);
설명서 페이지 : https://docs.microsoft.com/en-us/windows/win32/api/shlobj_core/nf-shlobj_core-shgetknownfolderpath
REFKNOWNFOLDERID 매개변수 페이지 : https://docs.microsoft.com/ko-kr/windows/win32/shell/knownfolderid
※ SHGetKnownFolderPath()
함수 호출 후 반드시 CoTaskMemFree()
를 호출해야 합니다.
해당 함수 호출로 더이상 사용하지 않는 리소스를 해제해야 한다고 설명서에 나와있네요.
근데 CoTaskMemFree()
를 호출하고 다시 path를 찍어보면 경로가 그대로 나와서 잘 모르겠네요.....
CoTaskMemFree 설명서 : https://docs.microsoft.com/ko-kr/windows/win32/api/combaseapi/nf-combaseapi-cotaskmemfree
반응형