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