Как определить количество свободного места на диске
Private Declare Function GetDiskFreeSpaceEx Lib "kernel32" Alias _
"GetDiskFreeSpaceExA" (ByVal lpRootPathName As String, _
lpFreeBytesAvailableToCaller As LARGE_INTEGER, _
lpTotalNumberOfBytes As LARGE_INTEGER, _
lpTotalNumberOfFreeBytes As LARGE_INTEGER) As Long
Private Type LARGE_INTEGER
lowpart As Long
highpart As Long
End Type
Dim lpFreeBytesAvailableToCaller As LARGE_INTEGER
Dim lpTotalNumberOfBytes As LARGE_INTEGER
Dim lpTotalNumberOfFreeBytes As LARGE_INTEGER
Dim AllBytes As Double
Dim FreeBytes As Double
Private Sub Command1_Click()
GetDiskFreeSpaceEx "c:\", lpFreeBytesAvailableToCaller, _
lpTotalNumberOfBytes, lpTotalNumberOfFreeBytes
' Всего на диске c
AllBytes = ConvToDouble(lpTotalNumberOfBytes)
' Свободно на диске c
FreeBytes = ConvToDouble(lpTotalNumberOfFreeBytes)
End Sub
Private Function ConvToDouble(n As LARGE_INTEGER) As Double
If n.lowpart >= 0 Then
ConvToDouble = n.lowpart
Else
ConvToDouble = 4294967296# * (n.highpart + 1) + n.lowpart
End If
End Function