/* iwbasic example program Shows how to use the system directory browser Compile as a WINDOWS target */ DEF mywin:WINDOW DEF result:INT DEF Buffer:STRING DEF sf:INT OPENWINDOW mywin,0,0,400,300,@MINBOX,0,"Browse for Folder",&mysub print mywin,GetFolder() int run = 1 WAITUNTIL run = 0 CLOSEWINDOW mywin END SUB mysub SELECT @CLASS CASE @IDCLOSEWINDOW run = 0 CASE @IDCREATE CENTERWINDOW mywin ENDSELECT RETURN 0 ENDSUB /* subroutine to open the system folder browser */ TYPE BROWSEINFO DEF hOwner:UINT DEF pidlRoot:UINT DEF pszDisplayName:POINTER DEF lpszTitle:POINTER DEF ulFlags:UINT DEF lpfn:UINT DEF lParam:INT DEF iImage:INT ENDTYPE DECLARE IMPORT,SHGetPathFromIDList(pidl:INT,pszPath:STRING),INT DECLARE IMPORT,SHBrowseForFolder(lpbi:BROWSEINFO),INT DECLARE IMPORT,CoTaskMemFree(pidl:int) DECLARE IMPORT,ZeroMemory ALIAS RtlZeroMemory(pData as POINTER,length as INT) SUB GetFolder(),STRING DEF path[260] as ISTRING DEF bi:BROWSEINFO DEF lpIDList:INT 'initialize variables path[0] = 0 ZeroMemory(&bi,LEN(bi)) bi.hOwner = mywin.hWnd bi.pszDisplayName = Buffer bi.lpszTitle = "Select Directory:" bi.ulFlags = 0x00000001 lpIDList = SHBrowseForFolder(bi) if lpIDList <> 0 SHGetPathFromIDList(lpIDList,path) CoTaskMemFree(lpIDList) ENDIF RETURN path ENDSUB