> PROCEDURE DriveListing > * Constants for drive types. > #DEFINE DRIVE_UNKNOWN 0 > #DEFINE DRIVE_NO_ROOT_DIR 1 > #DEFINE DRIVE_REMOVABLE 2 > #DEFINE DRIVE_FIXED 3 > #DEFINE DRIVE_REMOTE 4 > #DEFINE DRIVE_CDROM 5 > #DEFINE DRIVE_RAMDISK 6 > *#DEFINE CR CHR(13) > > DECLARE INTEGER GetLogicalDrives IN Win32API > DECLARE INTEGER GetDriveType IN Win32API STRING RootPath > > PRIVATE lcDrivestring, lcDriveRoot, liDrivelist, lcDrives, i > lcDrives = "" > > liDrivelist = GetLogicalDrives() > > * Check each of the bits > FOR i = 0 TO 31 > IF BITTEST(liDrivelist, i) > * If the 0th bit is ON, that means drive 'A:', > * the 2nd bit is 'C:", etc. > lcDriveRoot = CHR(65 + i) + ":\" > * Perform a GetDriveType to determine if it is a floppy, CD, etc. > lcDrivetype = GetDriveType(lcDriveRoot) > DO CASE > CASE lcDrivetype = DRIVE_UNKNOWN > lcDrivestring = "Cannot be determined" > CASE lcDrivetype = DRIVE_NO_ROOT_DIR > lcDrivestring = "Root directory does not exist" > CASE lcDrivetype = DRIVE_REMOVABLE > lcDrivestring = "Floppy/removable drive" > CASE lcDrivetype = DRIVE_FIXED > lcDrivestring = "Hard drive/nonremovable drive" > CASE lcDrivetype = DRIVE_REMOTE > lcDrivestring = "Remote/Network drive" > lcunc=THIS.GetUNCForDriveLetter(LEFT(lcDriveRoot,2)) > IF TYPE('lcunc')="C" .AND. !EMPTY(lcunc) > lcDrivestring = lcunc > ENDIF > CASE lcDrivetype = DRIVE_CDROM > lcDrivestring = "CD-ROM drive" > CASE lcDrivetype = DRIVE_RAMDISK > lcDrivestring = "RAM disk" > ENDCASE > lcDrives = lcDrives + lcDriveRoot + " " + lcDrivestring + chr(13)+chr(10) > ENDIF > NEXT > > *=MESSAGEBOX(lcDrives, 0 + 64 + 0,'All Drives Listing') > RETURN lcDrives > RETURN > > ENDPROC > >