| Код | #include <shlobj.h>
//возвращает FALSE при ошибке и TRUE при удаче BOOL OpenFolder(LPSTR szFolder, //адрес, куда положить HWND hwndOwner=NULL, //родительское окно для диалога int nFolder=-1) //если -1 - то вызов стандартного диалога выбора папки //иначе CSIDL_... (специальная папка, see SHGetSpecialFolderLocation) -возвращает путь //к спецпапке Виндовс { *szFolder=0; LPMALLOC IMalloc; if(SHGetMalloc(&IMalloc)==E_FAIL) return FALSE; ITEMIDLIST *piidl=NULL; BOOL ret=FALSE; if(nFolder==-1) { BROWSEINFO bi; bi.hwndOwner=hwndOwner; bi.pidlRoot=NULL; bi.pszDisplayName=szFolder; bi.lpszTitle="Open Folder for Shortcut:"; bi.ulFlags=BIF_DONTGOBELOWDOMAIN; bi.lpfn=NULL; bi.lParam=0; bi.iImage=0; piidl=SHBrowseForFolder(&bi); if(piidl!=NULL) ret=SHGetPathFromIDList(piidl, szFolder); } else { ret=(SHGetSpecialFolderLocation(hwndOwner, nFolder, &piidl)==NOERROR); if(ret) ret=SHGetPathFromIDList(piidl, szFolder); } if(piidl) IMalloc->Free(piidl); IMalloc->Release(); return ret; } | |