'计算磁盘剩余空间,返回单位为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

解决方案 »

  1.   

    '一些声明Private Type LARGE_INTEGER ' 8 Bytes
        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
      

  2.   

    用FSO文件系统对象
    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
      

  3.   

    to  daviddivad(你真行,居然比我还快!) :
        谢谢你,不过我觉得
     
        把lng_FreeSpace改为Double型是否会更好呢。
      

  4.   

    首先加入一个引用:
    工程->引用->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盘的剩余空间。