如何获得驱动器的可用空间大小?

lyphb 2003-10-31 11:17:12
rt
...全文
220 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
CBASE 2003-10-31
  • 打赏
  • 举报
回复
盘符输入样式为:c:\
CBASE 2003-10-31
  • 打赏
  • 举报
回复
在程序中放2个label控件和1个textbox控件
Text1.text:盘符
labelT:总容量
labelF:自由空间

Private Declare Function GetDiskFreeSpace Lib "kernel32" Alias "GetDiskFreeSpaceA" (ByVal lpRootPathName As String, lpSectorsPerCluster As Long, lpBytesPerSector As Long, lpNumberOfFreeClusters As Long, lpTotalNumberOfClusters As Long) As Long

Private Sub Command1_Click()
Dim a, b, c, d, free, total As Long
Dim disk As String
disk = Text1.Text
GetDiskFreeSpace disk, a, b, c, d
'计算磁盘总容量
total = d * b * a / 1024 / 1024
'计算磁盘自由空间
free = c * a * b / 1024 / 1024
'显示磁盘总容量与自由空间
LabT.Caption = total & "MB"
LabF.Caption = free & "MB"
End Sub






fleshboy 2003-10-31
  • 打赏
  • 举报
回复
先用 GetDrive 得到驱动器
然后用 GetDiskFreeSpace 得到可用空间
online 2003-10-31
  • 打赏
  • 举报
回复
Option Explicit

' API声明
Private Declare Function GetDiskFreeSpace Lib "kernel32" Alias "GetDiskFreeSpaceA" (ByVal lpRootPathName As String, lpSectorsPerCluster As Long, lpBytesPerSector As Long, lpNumberOfFreeClusters As Long, lpTtoalNumberOfClusters As Long) As Long

Private Sub Form_Load()
GetDriveInfo
End Sub

' 选中一个驱动器时
Private Sub drvSelect_Change()
GetDriveInfo
End Sub

' 获取磁盘剩余空间信息并显示在相应的标签中
Private Function GetDriveInfo()
Dim sDrive As String
Dim lBytes As Long
Dim lMBFree As Double
Dim lMBTotal As Double
Dim lSecPerClust As Long ' 扇区每簇
Dim lBytePerSect As Long ' 字节每扇区
Dim lNumFreeClust As Long ' 空白簇的数目
Dim lTotalNumClust As Long ' 簇的总数

' 获取盘符
sDrive = Left$(DrvSelect.Drive, 1)
sDrive = sDrive & ":\"
' 调用API函数返回剩余空间
lBytes = GetDiskFreeSpace(sDrive, lSecPerClust, lBytePerSect, lNumFreeClust, lTotalNumClust)
' 转换以兆为单位
lMBFree = ((lSecPerClust * lNumFreeClust) / 1024) * lBytePerSect / 1024
lMBTotal = ((lSecPerClust * lTotalNumClust) / 1024) * lBytePerSect / 1024
' 显示信息
lblSecPerClust.Caption = lSecPerClust & " Sectors/Cluster"
lblBytePerSect.Caption = lBytePerSect & " Bytes/Sector"
lblNumFreeClust.Caption = lNumFreeClust & " Free Clusters"
lblTotalNumClust.Caption = lTotalNumClust & " Total Clusters"
lblTotalSpace.Caption = lMBTotal & " MB Total Space"
lblSpaceFree.Caption = lMBFree & " MB Free on Drive " & DrvSelect.Drive
End Function

lyphb 2003-10-31
  • 打赏
  • 举报
回复
我用了filesystemobject,谢谢几位。

7,789

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧