' CB_FolderFind.cba ' Author: Pyxia development modified by Egil-LA2PJ 2013 ' AUTODEFINE "OFF" TYPE BROWSEINFO DEF hOwner:INT DEF pidlRoot:INT DEF pszDisplayName:STRING DEF lpszTitle:STRING DEF ulFlags:INT DEF lpfn:INT DEF lParam:INT DEF iImage:INT ENDTYPE DECLARE "shell32.dll",SHGetPathFromIDList(pidl:INT,pszPath:STRING),INT DECLARE "shell32.dll",SHBrowseForFolder(lpbi:BROWSEINFO),INT 'DECLARE "shell32.dll",SHGetSpecialFolderLocation(hwnd:INT,csidl:INT,ppidl:ITEM IDLIST) DECLARE "ole32",CoTaskMemFree(pidl:int) DECLARE FindFolder(wnd:window) DEF mywin:WINDOW DEF run,result:INT DEF Buffer:STRING DEF sf:INT WINDOW mywin,-400,0,400,300,@MINBOX,0,"Browse for Folder",mainloop CENTERWINDOW mywin print mywin,FindFolder(mywin) run = 1 WAITUNTIL run = 0 CLOSEWINDOW mywin END SUB mainloop() SELECT @CLASS CASE @IDCLOSEWINDOW run = 0 ENDSELECT RETURN SUB FindFolder(wnd:window) '--------------------------------------------------------------------------------------------------------------- ' Browse for folder. Call with windows handle. Returns selected folder as string. '--------------------------------------------------------------------------------------------------------------- DEF bi:BROWSEINFO DEF lpIDList:INT def pszPath:int DEF buf:string bi.hOwner = wnd bi.pszDisplayName = buf bi.lpszTitle = "Select Directory:" bi.ulFlags = 0x00000001 lpIDList = SHBrowseForFolder(bi) IF lpIDList <> 0 pszPath = SHGetPathFromIDList(lpIDList,buf) CoTaskMemFree(lpIDList) ENDIF RETURN buf