Put a Drive List Box (Drive 1) at the top of a Form, make the Form about 5" wide by about 5" High and add the following code to the Form:
Code:Option Explicit Private Declare Function GetDiskFreeSpaceEx Lib "kernel32" _ Alias "GetDiskFreeSpaceExA" _ (ByVal lpRootPathName As String, _ lpFreeBytesAvailableToCaller As Currency, _ lpTotalNumberOfBytes As Currency, _ lpTotalNumberOfFreeBytes As Currency) As Long Dim r As Long, BytesFreeToCalller As Currency, TotalBytes As Currency Dim TotalFreeBytes As Currency, TotalBytesUsed As Currency Dim TNB As Double Dim TFB As Double Dim FreeBytes As Long Dim DriveLetter As String Dim DLetter As String Dim spaceInt As Integer Public Sub GetDiskInfo() 'The following code prepares the drive letter. It is 'essential that you pass the drive letter to the API 'function in the form c:\. You can not pass 'Drive1.Drive directly because often this does not 'contain the correct format ("c:\"). 'copy the drive letter into the variable DriveLetter DriveLetter = Drive1.Drive 'If there is a space on the end of DriveLetter, remove it spaceInt = InStr(DriveLetter, " ") If spaceInt > 0 Then DriveLetter = Left$(DriveLetter, spaceInt - 1) 'if there is not a "\" on the end of DriveLetter, add it If Right$(DriveLetter, 1) <> "\" Then DriveLetter = DriveLetter & "\" DLetter = Left(UCase(DriveLetter), 1) 'get the drive's disk parameters Call GetDiskFreeSpaceEx(DriveLetter, BytesFreeToCalller, TotalBytes, TotalFreeBytes) 'show the results, multiplying the returned 'value by 10000 to adjust for the 4 decimal 'places that the currency data type returns. AutoRedraw = True Cls ForeColor = QBColor(1) Print Print Print Print Print " Information for Drive " & DLetter Print " ------------------------------------ " Print Print " Total Number Of Bytes:", Format$(TotalBytes * 10000, "###,###,###,##0") & " bytes" Print " Total Free Bytes:", Format$(TotalFreeBytes * 10000, "###,###,###,##0") & " bytes" Print " Free Bytes Available:", Format$(BytesFreeToCalller * 10000, "###,###,###,##0") & " bytes" Print " Total Space Used :", Format$((TotalBytes - TotalFreeBytes) * 10000, "###,###,###,##0") & " bytes" Print ForeColor = QBColor(12) TNB = TotalBytes * 10000 TFB = (TotalBytes - TotalFreeBytes) * 10000 Print " % - Drive " & DLetter & ": Disk Space Used = " & Format(TFB / TNB * 100, "###.#0") & " %" Print " % - Drive " & DLetter & ": Disk Space Available = " & Format(100 - TFB / TNB * 100, "###.#0") & " %" Print End Sub Private Sub Drive1_Change() GetDiskInfo End Sub Private Sub Form_Load() GetDiskInfo End Sub




Reply With Quote