반응형
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
반응형
'프로그래밍 > C++' 카테고리의 다른 글
C++ std::async 사용방법. (0) | 2020.06.10 |
---|---|
C++ thread와 async의 차이점 (0) | 2020.06.09 |
C++ 파일 입출력(ofstream, ifstream) Window전용 (0) | 2020.06.04 |
C++] 스마트 포인터에 대하여... (0) | 2020.05.31 |
C++] map 사용법과 원리 (0) | 2020.02.05 |
댓글