热情软件屋

 

如何获得任意磁盘的剩余空间


编号: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”

此问题由李海回答。

 
把这个问题推荐给朋友
   
   
您的意见类别
您的名字
您的电子邮件
您的建议(请尽可能详细)
 
 

版权所有 1997-2008 热情软件屋
如果您有任何建议和意见, 请给我发个电子邮件 askpro@china-askpro.com
Web Designed by ZebraStudio