#define _drive_removable "2" #define _drive_fixed "3" #define _drive_remote "4" #define _drive_cdrom "5" *-- Sample usage *-- Find available(s) CDROM Local cAllDrv, cDrvTypes, cCDRom, J cAllDrv = ListDrives() cDrvTypes = ListDriveTypes(cAllDrv) cCDRom = "" For J=1 To Len(cDrvTypes) If Substr(cDrvTypes,J,1) = _drive_cdrom cCDRom = cCDRom + Substr(cAllDrv, J, 1) Endif EndFor If Len(cCDrom)>0 ? 'List Of CDROM Letters: '+cCDRom Else ? 'No CDROM in this system' Endif Return *-- Return a string string with valid drive letters Function ListDrives Declare Integer GetLogicalDrives in win32api Local nDrvMask, J, nbase, cLetters nDrvMask = Mod(GetLogicalDrives(), 0xFFFFFFFF+1) nbase = Asc('A') cLetters = "" For J=0 To 25 If bittest(nDrvMask, J) cLetters = cLetters+chr(nbase+J) Endif EndFor Return cLetters EndFunc *-- Accept a string of drives letters and *-- Return a string of corresponding drive types Function ListDriveTypes LParameters cLetters Declare Integer GetDriveType in win32api String crootpath Local J, cDrvTypes cDrvTypes = "" For J=1 To Len(cLetters) cDrvTypes = cDrvTypes + Str(GetDriveType(Substr(cLetters, J, 1)+':\'),1,0) EndFor Return cDrvTypes EndFunc