> >#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 > >