小妹求救!
如何计算磁盘的剩余空间,最好有源码。
谢谢!!
问题点数:100、回复次数:8Top
1 楼daviddivad(你真行,居然比我还快! Scorpio)回复于 2002-08-02 10:15:35 得分 70
'计算磁盘剩余空间,返回单位为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
Top
2 楼daviddivad(你真行,居然比我还快! Scorpio)回复于 2002-08-02 10:18:45 得分 0
'一些声明
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
Top
3 楼griefforyou(为你伤心)回复于 2002-08-02 10:20:32 得分 0
居然比我还快!Top
4 楼zhuangbx220(星)回复于 2002-08-02 10:21:56 得分 30
用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
Top
5 楼szj820(都市精灵,机会没有,鸡会有的,努力努力)回复于 2002-08-02 10:22:21 得分 0
關注Top
6 楼sunnydavid(sunny)回复于 2002-08-02 10:26:03 得分 0
to daviddivad(你真行,居然比我还快!) :
谢谢你,不过我觉得
把lng_FreeSpace改为Double型是否会更好呢。Top
7 楼Richard2001(Richard)回复于 2002-08-02 10:29:16 得分 0
首先加入一个引用:
工程->引用->Microsoft Scripting Runtime
然后:
Dim o As New Scripting.FileSystemObject
'Me.Caption = o.GetDrive("C").FreeSpace
Me.Caption = o.GetDrive("C").AvailableSpace
o.GetDrive("C").FreeSpace 或o.GetDrive("C").AvailableSpace 就是C盘的剩余空间。
Top
8 楼Richard2001(Richard)回复于 2002-08-02 10:31:25 得分 0
我的方法最简单!Top




