프로그래밍/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, 0NULL, &path); //바탕화면 경로 가져오기.

    wprintf(L"%s\n", path);
    CoTaskMemFree(path);

    SHGetKnownFolderPath(FOLDERID_Documents, 0NULL, &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




반응형