07-05-2023, 03:49 PM
Quote:I also found something like that.@Stefan-68, useful program. Did you program it yourself or where did you find it? The explanation would be important to me with regard to the declaration of the "library".
I have modified it a bit so that one can specify the drives.
Code: (Select All)
'Stefan68, Belegung eines Speichermediums ermitteln - 3. Juli 2023
Option _Explicit
Const DRIVE_UNKNOWN = 0
Const DRIVE_NO_ROOT_DIR = 1
Const DRIVE_REMOVABLE = 2
Const DRIVE_FIXED = 3
Const DRIVE_REMOTE = 4
Const DRIVE_CDROM = 5
Const DRIVE_RAMDISK = 6
Declare Dynamic Library "Kernel32"
Function GetDiskFreeSpace% Alias GetDiskFreeSpaceExA (lpDirectoryName As String, Byval lpFreeBytesAvailableToCaller As _Offset, Byval lpTotalNumberOfBytes As _Offset, Byval lpTotalNumberOfFreeBytes As _Offset)
Function GetDriveType~& Alias GetDriveTypeA (lpRootPathName As String)
End Declare
Dim totalFreeBytesOnDisk As _Unsigned _Integer64
Dim laufwerk As String * 3
Locate 3, 3
Print "Zeigt die Belegung der Laufwerke an"
Locate 4, 3
Print "==================================="
Locate 6, 3
Input "Laufwerksbustabe (z.B. C:): ", laufwerk
Locate CsrLin + 1, 3
If GetDiskFreeSpace(laufwerk, 0, 0, _Offset(totalFreeBytesOnDisk)) Then
Select Case totalFreeBytesOnDisk
Case Is < 1024
Print Using " ####, B Available"; totalFreeBytesOnDisk,
Case Is < (1024 ^ 2) And totalFreeBytesOnDisk >= 1024
Print Using "####,.## KB Available"; (totalFreeBytesOnDisk / 1024)
Case Is < (1024 ^ 3) And totalFreeBytesOnDisk >= (1024 ^ 2)
Print Using "####,.## MB Available"; (totalFreeBytesOnDisk / (1024 ^ 2))
Case Is < (1024 ^ 4) And totalFreeBytesOnDisk >= (1024 ^ 3)
Print Using "####,.## GB Available"; (totalFreeBytesOnDisk / (1024 ^ 3))
Case Is < (1024 ^ 5) And totalFreeBytesOnDisk >= (1024 ^ 4)
Print Using "####,.## TB Available"; (totalFreeBytesOnDisk / (1024 ^ 4))
End Select
End If
Locate CsrLin + 2, 3
Beep
Select Case GetDriveType(laufwerk)
Case DRIVE_UNKNOWN
Print "Unkown drive type"
Case DRIVE_NO_ROOT_DIR
Print "Invalid path"
Case DRIVE_REMOVABLE
Print "Removable media"
Case DRIVE_FIXED
Print "Fixed media"
Case DRIVE_REMOTE
Print "Network media"
Case DRIVE_CDROM
Print "CD-ROM drive"
Case DRIVE_RAMDISK
Print "RAM disk"
End Select