'计算磁盘剩余空间,返回单位为MB,存在变量lng_FreeSpace中,错误返回False,成功返回True
Public Function fun_GetDiskFreeSpace(ByVal str_DiskName As String, ByRef lng_FreeSpace As Long) As Boolean
Dim lng_Ret As Long
Dim lng_Free As LARGE_INTEGER, lng_Total As LARGE_INTEGER, lng_VaFree As LARGE_INTEGER
On Error GoTo doError
lng_Ret = GetDiskFreeSpaceEx(str_DiskName, lng_VaFree, lng_Total, lng_Free)
If lng_Ret <> ERROR_SUCCESS Then
'空间为:高字节*2^32 加上 低字节,转换成MB,需要除以1024*1024,即2^20
lng_FreeSpace = lng_VaFree.highpart * 2 ^ 12 + lng_VaFree.lowpart / 2 ^ 20
fun_GetDiskFreeSpace = True
Else
fun_GetDiskFreeSpace = False
lng_FreeSpace = 0
End If
Exit Function
doError:
fun_GetDiskFreeSpace = False
lng_FreeSpace = 0
End Function例如:
Dim c As New clsgps
Dim l As Long
c.fun_GetDiskFreeSpace "C:", l ':是必须的。
Debug.Print l
Public Function fun_GetDiskFreeSpace(ByVal str_DiskName As String, ByRef lng_FreeSpace As Long) As Boolean
Dim lng_Ret As Long
Dim lng_Free As LARGE_INTEGER, lng_Total As LARGE_INTEGER, lng_VaFree As LARGE_INTEGER
On Error GoTo doError
lng_Ret = GetDiskFreeSpaceEx(str_DiskName, lng_VaFree, lng_Total, lng_Free)
If lng_Ret <> ERROR_SUCCESS Then
'空间为:高字节*2^32 加上 低字节,转换成MB,需要除以1024*1024,即2^20
lng_FreeSpace = lng_VaFree.highpart * 2 ^ 12 + lng_VaFree.lowpart / 2 ^ 20
fun_GetDiskFreeSpace = True
Else
fun_GetDiskFreeSpace = False
lng_FreeSpace = 0
End If
Exit Function
doError:
fun_GetDiskFreeSpace = False
lng_FreeSpace = 0
End Function例如:
Dim c As New clsgps
Dim l As Long
c.fun_GetDiskFreeSpace "C:", l ':是必须的。
Debug.Print l
lowpart As Long
highpart As Long
End Type
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
dim fso as new filesystemobject
dim drv as drive
set drv=fso.getdrive(fso.getdrivename("c:"))
print "驱动器C的卷标:" & drv.VolumeName
print "总空间:" & FormatNumber(drv.TotalSize/1024,0) & "字节print "可用空间:" & FormatNumber(drv.FreeSpace/1024,0) & "字节print "文件系统类型:" & drv.FileSystem
谢谢你,不过我觉得
把lng_FreeSpace改为Double型是否会更好呢。
工程->引用->Microsoft Scripting Runtime然后: Dim o As New Scripting.FileSystemObject
'Me.Caption = o.GetDrive("C").FreeSpace
Me.Caption = o.GetDrive("C").AvailableSpaceo.GetDrive("C").FreeSpace 或o.GetDrive("C").AvailableSpace 就是C盘的剩余空间。