반응형
1. 윈도우 디렉토리
UINT GetWindowsDirectory(LPYSTR lpBuffer, UINT uSize);
2. 시스템 디렉토리
UINT GetSystemDirectory(LPTSTR lpBuffer, UINT uSize); -> System32 서브폴더
3. 특수 폴더 절대 경로 조사
1. HRESULT SHGetSpecialFolderLocation(HWND hwndOwner, int nFolder, LPITEMIDLIST *ppidl);
nFolder - 특수폴더 ID (윈도우즈 API정복 p.1827참고)
LPITEMIDLIST pidl; 의 주소를 넘겨주고 값을 받아온다. 이값으로부터 절대 경로 구할수 있음.
2. BOOL SHGetPathFromIDList(LPCITEMIDLIST pidl, LPSTR pszPath);
pszPath는 최소한 MAX_PATH의 길이를 가져야 함.
3. PIDL을 다 사용하고 난 후에는 해제한다.
LPMALLOC pMalloc;
SHGetMalloc(&pMalloc);
pMalloc->Free(pidl);
pMalloc->Release();
nFolder - 특수폴더 ID (윈도우즈 API정복 p.1827참고)
LPITEMIDLIST pidl; 의 주소를 넘겨주고 값을 받아온다. 이값으로부터 절대 경로 구할수 있음.
2. BOOL SHGetPathFromIDList(LPCITEMIDLIST pidl, LPSTR pszPath);
pszPath는 최소한 MAX_PATH의 길이를 가져야 함.
3. PIDL을 다 사용하고 난 후에는 해제한다.
LPMALLOC pMalloc;
SHGetMalloc(&pMalloc);
pMalloc->Free(pidl);
pMalloc->Release();
ex)
LPITEMIDLIST pidl;
TCHAR szFolder[MAX_PATH];
TCHAR str[256];
LPMALLOC pMalloc;
SHGetSpecialFolderLocation(hWnd, CSIDL_PROGRAMS, &pidl);
SHGetPathFromIDList(pidl, szFolder);
SHGetMalloc(&pMalloc);
pMalloc->Free(pidl);
pMalloc->Release();
LPITEMIDLIST pidl;
TCHAR szFolder[MAX_PATH];
TCHAR str[256];
LPMALLOC pMalloc;
SHGetSpecialFolderLocation(hWnd, CSIDL_PROGRAMS, &pidl);
SHGetPathFromIDList(pidl, szFolder);
SHGetMalloc(&pMalloc);
pMalloc->Free(pidl);
pMalloc->Release();
반응형