BOOL SHGetSpecialFolderPath(
  HWND hwndOwner,
  LPTSTR lpszPath,
  int nFolder,
  BOOL fCreate
);


 HWND hwndOwner,
 만약 다이얼로그 박스나 메세지 박스에 보여주려고 할때 넘겨 줘야 하는 Owner window 핸들
 
  LPTSTR lpszPath,
 특수 폴더의 드라이브와 경로를 받을 char 버퍼

  int nFolder,
  알고자 하는 특수 폴더의 CSIDL의 상수 값, 만약 가상 폴더값이 입력되었다면 이 함수는 실패 할 것이다. 

  BOOL fCreate 
 만약 기존의 특수 폴더가 존재하지 않는다면 폴더를 생성할 것인지 아닌지를 설정, 이 값이 0이 아닌 값이라면 폴더는 생성될것이다. 하지만 0이라면 폴더는 생성되지 않는다.

   

사용 예)

 TCHAR szSpecialPath[MAX_PATH] = {0};
    SHGetSpecialFolderPath(NULL, szSpecialPath, CSIDL_WINDOWS, FALSE);


  nFolder  상수 값

  CSIDL_FLAG_CREATE
  CSIDL_ADMINTOOLS
  CSIDL_ALTSTARTUP
  CSIDL_APPDATA
  CSIDL_BITBUCKET
  CSIDL_COMMON_ADMINTOOLS
  CSIDL_COMMON_ALTSTARTUP    
  CSIDL_COMMON_APPDATA  
  CSIDL_COMMON_DESKTOPDIRECTORY    
  CSIDL_COMMON_DOCUMENTS    
  CSIDL_COMMON_FAVORITES    
  CSIDL_COMMON_PROGRAMS    
  CSIDL_COMMON_STARTMENU    
  CSIDL_COMMON_STARTUP
  CSIDL_COMMON_TEMPLATES    
  CSIDL_CONTROLS    
  CSIDL_COOKIES  
  CSIDL_DESKTOP
  CSIDL_DESKTOPDIRECTORY  
  CSIDL_DRIVES  
  CSIDL_FAVORITES    
  CSIDL_FONTS    
  CSIDL_HISTORY     CSIDL_INTERNET  
  CSIDL_INTERNET_CACHE  
  CSIDL_LOCAL_APPDATA  
  CSIDL_MYMUSIC    
  CSIDL_MYPICTURES  
  CSIDL_NETHOOD  
  CSIDL_NETWORK
  CSIDL_PERSONAL  
  CSIDL_PRINTERS  
  CSIDL_PRINTHOOD  
  CSIDL_PROFILE  
  CSIDL_PROGRAM_FILES    
  CSIDL_PROGRAM_FILES_COMMON  
  CSIDL_PROGRAMS  
  CSIDL_RECENT     CSIDL_SENDTO  
  CSIDL_STARTMENU  
  CSIDL_STARTUP  
  CSIDL_SYSTEM  
  CSIDL_TEMPLATES  
  CSIDL_WINDOWS

Posted by 모과이IT
,