如何获得任意磁盘的剩余空间
编号:QA000771
建立日期: 1999年4月7日 最后修改日期:2001年1月11日
所属类别:
李勐:
VB5.0企业版
PWIN95
如何在VB中获得任意磁盘的剩余空间?谢谢!
回答:
2G以下的硬盘可以使用API函数GetDiskFreeSpace。下面就是一个例子。
Declare Function GetDiskFreeSpace Lib "kernel32" Alias _
"GetDiskFreeSpaceA" (ByVal lpRootPathName As String, _
lpSectorsPerCluster As Long, lpBytesPerSector As Long, _
lpNumberOfFreeClusters As Long, lpTotalNumberOfClusters As Long) _
Public Type DiskInformation
lpSectorsPerCluster As Long
lpBytesPerSector As Long
lpNumberOfFreeClusters As Long
lpTotalNumberOfClusters As Long
End Type
Sub main()
Dim info As DiskInformation
Dim lAnswer As Long
Dim lpRootPathName As String
Dim lpSectorsPerCluster As Long
Dim lpBytesPerSector As Long
Dim lpNumberOfFreeClusters As Long
Dim lpTotalNumberOfClusters As Long
Dim lBytesPerCluster As Long
Dim lNumFreeBytes As Double
Dim sString As String
lpRootPathName = "c:\"
lAnswer = GetDiskFreeSpace(lpRootPathName, lpSectorsPerCluster, _
lpBytesPerSector, lpNumberOfFreeClusters, lpTotalNumberOfClusters)
lBytesPerCluster = lpSectorsPerCluster * lpBytesPerSector
lNumFreeBytes = lBytesPerCluster * lpNumberOfFreeClusters
sString = "Number of Free Bytes : " & lNumFreeBytes & vbCr & vbLf
sString = sString & "Number of Free Kilobytes: " & (lNumFreeBytes _
/ 1024) & "K" & vbCr & vbLf
sString = sString & "Number of Free Megabytes: " & _
Format(((lNumFreeBytes / 1024) / 1024), "0.00") & "MB"
MsgBox sString
End Sub
不过因为这个函数的几个参数都是Long型,而Long最多表示2G。在Windows 95 OSR以后版本增加了GetDiskFreeSpaceEx函数,以支持大硬盘,这个函数的不同之处在于所有的Long参数都改为了64位整数。这个新函数的使用方法参考微软的Knowledge Base的文章:“Q202455 OWTO: Get Disk Free Space Using the GetDiskFreeSpaceEx() API”。
此问题由李海回答。
| |
|
|
| |
|
|