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