본문 바로가기

Windows/MFC

즐겨찾기 위치 찾기 (Finding favorites folder)

SHGetSpecialFolderLocation함수로 PIDL을 구한뒤 경로를 구하세요.
다음 함수를 쓰시면 될겁니다.

[code]
void MyGetSpecialFolderPath(HWND hWnd, int nFolder, char *szPath)
{
    LPITEMIDLIST pidl;
    LPMALLOC pMalloc;

    SHGetSpecialFolderLocation(hWnd,nFolder,&pidl);
    SHGetPathFromIDList(pidl, szPath);
    SHGetMalloc(&pMalloc);
    pMalloc->Free(pidl);
    pMalloc->Release();
}[/code]

그리고 다음과 같이 코딩하시면 됩니다.

[code]
#include <shlobj.h>
char path[MAX_PATH]={0};
MyGetSpecialFolderPath(this->m_hWnd, CSIDL_FAVORITES, path);
[/code]

그럼 즐프하시길...


[code]
TCHAR sz[MAX_PATH];        // 환경 변수가 포함된 즐겨찾기 경로
TCHAR szPath[MAX_PATH];    // 즐겨 찾기가 있는 폴더 경로
HKEY hKey;
DWORD dwSize;

// 즐겨찾기 정보가 있는 파일 위치를 알아온다.
if(RegOpenKey(HKEY_CURRENT_USER, _T("Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\User Shell Folders"),
                &hKey) != ERROR_SUCCESS)
{
    TRACE0("Favorites folder not found\n");
    return FALSE;
}
dwSize = sizeof(sz);

// 환경변수가 포함된 즐겨찾기 경로를 가져온다.
// %USERPROFILE%\Favorites
RegQueryValueEx(hKey, _T("Favorites"), NULL, NULL, (LPBYTE)sz, &dwSize);

// 환경변수를 확장하여 완전한 경로를 얻는다.
ExpandEnvironmentStrings(sz, szPath, MAX_PATH);
RegCloseKey(hKey);

AfxMessageBox(szPath);        // 폴더 확인
[/code]

'Windows > MFC' 카테고리의 다른 글

F1키 눌러도 안뜨게 해주기  (0) 2013.10.02
Message Map 메시지 맵  (0) 2013.10.02
jpeg encoder and decoder  (0) 2013.10.02
CxImage (jpeg, bmp, png)  (0) 2013.10.02
팝업메뉴 띄우기 (popup)  (0) 2013.10.02