본문 바로가기
컴퓨터/MFC_API

시스템 폴더의 실제 경로, 문자열 얻어 오기

by adnoctum 2010. 2. 14.
   '내 문서'나 '바탕 화면'의 실제 경로는 얼마 든지 바꿀 수 있다. 실제로 나는 디폴트인, 시스템이 설치되어 있는 드라이브(일반적으로 C)에 있으면 포맷할 때마다 백업을 받아야 하는 불편함이 있기 때문에 다른 파티션으로 바꾸어 놓는다. 따라서 소프트웨어에서 이와 같은 시스템 폴더를 다루고자 할 때는 다음과 같은 API를 사용한다.

바탕 화면의 문자열 얻어 오기
바탕 화면 실제 경로 얻어 오기
내 문서 문자열 얻어 오기
내 문서 실제 경로 얻어 오기
내 컴퓨터의 문자열 얻어 오기

바탕 화면의 문자열 얻어 오기

CString GetDesktopLabel(int *sysIconIndex)

{

    TCHAR path[MAX_PATH] = "";

    LPMALLOC pMalloc;

    SHGetMalloc(&pMalloc);

    SHFILEINFO sfi = { 0 };

    // 'Desktop' or '바탕 화면' text

    LPITEMIDLIST pidl;

    SHGetSpecialFolderLocation(NULL, CSIDL_DESKTOP, &pidl);

    SHGetFileInfo((char*)pidl, 0, &sfi, sizeof(sfi), SHGFI_DISPLAYNAME | SHGFI_SYSICONINDEX | SHGFI_PIDL);

    pMalloc->Free(pidl);

    pMalloc->Release();

 

    if(sysIconIndex != NULL){

        *sysIconIndex = sfi.iIcon;

    }

    return sfi.szDisplayName;

}




바탕 화면 실제 경로 얻어 오기

TCHAR desktop_path[MAX_PATH] = "";

SHGetSpecialFolderPath(NULL,desktop_path,CSIDL_DESKTOPDIRECTORY,0);




내 문서 문자열 얻어 오기

CString GetMyDocumentLabel(int *sysIconIndex)

{

    LPMALLOC pMalloc;

    SHGetMalloc(&pMalloc);

    SHFILEINFO sfi = { 0 };

    // 'My Document' or '내 문서' text

    LPITEMIDLIST pidl;

    SHGetSpecialFolderLocation(NULL,CSIDL_PERSONAL, &pidl);

    SHGetFileInfo((char*)pidl, 0, &sfi, sizeof(sfi), SHGFI_DISPLAYNAME | SHGFI_SYSICONINDEX | SHGFI_PIDL);

    pMalloc->Free(pidl);

    pMalloc->Release();

 

    if(sysIconIndex != NULL){

        *sysIconIndex = sfi.iIcon;

    }

    return sfi.szDisplayName;

}



내 문서 실제 경로 얻어 오기

TCHAR path[MAX_PATH] = "";

SHGetSpecialFolderPath(NULL,path,CSIDL_PERSONAL,0);



내 컴퓨터의 문자열 얻어 오기

CString GetMyComputerLabel(int *sysIconIndex)

{

    LPMALLOC pMalloc;

    SHGetMalloc(&pMalloc);

    SHFILEINFO sfi = { 0 };

    // 'My Computer' or '내 컴퓨터' text

    LPITEMIDLIST pidl;

    SHGetSpecialFolderLocation(NULL,CSIDL_DRIVES, &pidl);

    SHGetFileInfo((char*)pidl, 0, &sfi, sizeof(sfi), SHGFI_DISPLAYNAME | SHGFI_SYSICONINDEX | SHGFI_PIDL);

    pMalloc->Free(pidl);

    pMalloc->Release();

 

    if(sysIconIndex != NULL){

        *sysIconIndex = sfi.iIcon;

    }

    return sfi.szDisplayName;

}





'컴퓨터 > MFC_API' 카테고리의 다른 글

Report형식의 CListCtrl에서 특정 항목 선택하기  (0) 2010.03.30
CTreeCtrl 에 디렉토리 표시하기  (0) 2010.02.14
CWnd에 대하여  (0) 2010.01.15
전체 화면으로 만들기  (0) 2009.12.27
팝업 윈도우 만들기  (0) 2009.12.27