【VB声明】
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【别名】
GetDiskFreeSpaceA【说明】
获取与一个磁盘的组织有关的信息,以及了解剩余空间的容量 【返回值】
Long,非零表示成功,零表示失败。会设置GetLastError 【备注】
在采用FAT16格式的windows95系统中,如一个驱动器(分区)的容量超过了2GB,则不应使用这个函数。此时,这个函数能识别的最大分区容量只有2GB【参数表】
lpRootPathName - String,不包括卷名的一个磁盘根路径 lpSectorsPerCluster - Long,用于装载一个簇内扇区数的变量 lpBytesPerSector - Long,用于装载一个扇区内字节数的变量 lpNumberOfFreeClusters - Long,用于装载磁盘上剩余簇数的变量 lpTtoalNumberOfClusters - Long,用于装载磁盘上总簇数的变量
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【别名】
GetDiskFreeSpaceA【说明】
获取与一个磁盘的组织有关的信息,以及了解剩余空间的容量 【返回值】
Long,非零表示成功,零表示失败。会设置GetLastError 【备注】
在采用FAT16格式的windows95系统中,如一个驱动器(分区)的容量超过了2GB,则不应使用这个函数。此时,这个函数能识别的最大分区容量只有2GB【参数表】
lpRootPathName - String,不包括卷名的一个磁盘根路径 lpSectorsPerCluster - Long,用于装载一个簇内扇区数的变量 lpBytesPerSector - Long,用于装载一个扇区内字节数的变量 lpNumberOfFreeClusters - Long,用于装载磁盘上剩余簇数的变量 lpTtoalNumberOfClusters - Long,用于装载磁盘上总簇数的变量
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 LongPrivate Sub Form_Load()
'KPD-Team 1998
'URL: http://www.allapi.net/
'E-Mail: [email protected] Dim Sectors as Long,Bytes as Long,FreeC as Long, TotalC as Long,Total as Long,Freeb as Long
'Retrieve information about the C: GetDiskFreeSpace "C:\", Sectors, Bytes, Freec, Totalc
'Set graphic mode to persistent
Me.AutoRedraw = True
'Print the information to the form
Me.Print " Path: C:\"
Me.Print " Sectors per Cluster:" + Str$(Sector)
Me.Print " Bytes per sector:" + Str$(Bytes)
Me.Print " Number Of Free Clusters:" + Str$(Freec)
Me.Print " Total Number Of Clusters:" + Str$(Totalc)
Total = rTotalc& * rSector& * rBytes&
Me.Print " Total number of bytes in path:" + Str$(Total)
Freeb = rFreec& * rSector& * rBytes&
Me.Print " Free bytes:" + Str$(Freeb)
End sub
http://www.commacn.com/vbsworld/ExtFiles/api32.zip
343KB
Win32 API帮助文件(中文版)http://202.99.172.24/down/swinapi.zip ←Copy它的
822KB
可以完全取代VB自带的API文本浏览器。软件中所有函数原型均取自于Win32api.txt.并且提供1543个函数的详细的中文说明,包括说明、返回值、参数表。更重要的一点是提供438个真正完整的VB实例供你参考。做为送给所有VB及Win32API编程爱好者的礼物献给大家。http://www.dapha.net/soure/api/allapi.zip
3981KB
它是一套学习Api函数不可缺少的软件,内置api流览器
Dim aa As Long, SecPerClust As Long, BytePerSec As Long, FreeClust As Long, totClust As Long
aa = GetDiskFreeSpace(Path, SecPerClust, BytePerSec, FreeClust, totClust)
GetTotalSpace = SecPerClust * BytePerSec * totClust
End Function
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 LongPublic Function GetDiskSpace(ByVal Path As String) As Double
Dim aa As Long
Dim SecPerClust As Long, BytePerSec As Long, FreeClust As Long, totClust As Long
aa = GetDiskFreeSpace(Path, SecPerClust, BytePerSec, FreeClust, totClust)
GetTotalSpace = CDbl(SecPerClust) * BytePerSec * totClust
End Function
问题不是出在最后的乘法运算,而是GetDiskFreeSpace得出的SecPerClust和totClust在98和2000下的值不同,真是奇怪。
去问 Bill·Gates(比尔·该死)!
Alias "GetDiskFreeSpaceExA" (ByVal lpDirectoryName As String, _
lpFreeBytesAvailableToCaller As Currency, _
lpTotalNumberOfBytes As Currency, _
lpTotalNumberOfFreeBytes As Currency) As LongPrivate Function GetDiskSpace() As String
Dim Status As Long, TotalBytes As Currency, FreeBytes As Currency, BytesAvailableToCaller As Currency
Status = GetDiskFreeSpaceEx("c:\", BytesAvailableToCaller, TotalBytes, FreeBytes)
GetDiskSpace = Format(TotalBytes * 10000, "###0")
GetDiskSpace = GetDiskSpace & GetDiskSpace & GetDiskSpace
End Function