VB中获取逻辑磁盘的信息
在编程时,我们有时需要获取系统中逻辑磁盘的一些信息,如磁盘卷标、磁盘序列号、大小在空和剩余空之间等。这些信息是不能用VB提供的函数直接获取的。但是借助于VB对WINDOWS API函数的支持,我们使用GetVolumeInformation和GetDiskFreeSpace两个API函数就可以很容易的得到磁盘的相关信息。
先说这两个功能。GetVolumeInformation函数用于获取磁盘卷的信息,包括磁盘卷标、磁盘序列号、文件完整路径名中“\”和“\”之间部分的长度、文件系统的名称以及文件系统的一些特性。GetDiskFreeSpace函数用于获取有关磁盘组织的信息,以及剩余空的容量,包括磁盘上的簇总数、剩余簇数、簇中的扇区数和扇区中的字节数。
我们来看看具体的例子。
进入VB,在窗体上添加一个DriveListBox和一个ListBox,然后添加以下脚本:
option Explicit
Private Declare Function getvolume information
Lib " kernel 32 " Alias
" getvolume information a "(ByVal lproot pathname As
String,ByVal lpvolumename buffer As
String,ByVal nVolumeNameSize As Long,
lpvolume serial number As Long,
lpMaximumComponentLength As Long,
lpFileSystemFlags As Long,ByVal
lpfilesystemname buffer
private Sub drive 1 _ Change()
Dim Volume As String,SysName As String
Dim serial num As Long,SysFlags As Long,
ComponentLength As Long,Res As Long
Dim sectors per cluster As Long,BytesPerSector
As Long,numberof free clusters As Long
Dim free bytes As Long,TotalBytes As Long,
percentre free As Long,Dl As LongClear
Volume = String(256,0)
SysName = String(256,0)
DrvName = Left(Drive1。Drive,2)& " \ "
Res = GetVolumeInformation(DrvName,
Volume,255,SerialNum,_
ComponentLength,SysFlags,SysName,25)
ifres = 0 then
list 1 . additem "无法获取磁盘信息"
Else
List1。AddItem "卷标:" & trim(Volume)
list 1 . AddItem "序列号:SerialNum
List1。AddItem "组件长度:" & component length
list 1 . AddItem "文件系统:" & trim(sysname)
dl = getdisk free space(drv name,
SectorsPerCluster,BytesPerSector,
numberof free clusters,Totnumberofclusters)
list 1 . AddItem "每个簇中的扇区数:"
& format(SectorsPerCluster," #,0")
List1。AddItem "每个扇区的字节数:"
& format (bytespercer," #,0")
list1.additem "簇总数:"
& format(totalnumberofclusters,.0")
List1。AddItem "剩余簇数:"
& Format(numberoffreeclusters," #,0 ")
totalbytes =簇总数*
sectorspercluster * bytes per
list 1 . AddItem " Total bytes:
" & Format(Total bytes," #,0 ")
空闲字节数= numberoffreeclusters
* sectorspercluster * bytes per
list 1 . AddItem "剩余字节数:"[/bradditem "文件名区分大小写"
end if
if sys标志和fs _ Unicode _ stored _
on _ disk then
list 1。AddItem "文件名以unicode格式保存"
End
if sys flags和fs _ persistent _ ACL then
list 1 . AddItem "文件系统支持文件访问
控制列表(ACL)安全机制"
End If
Sysflags和fs _ File _ compression then
list 1 . AddItem "文件系统支持逐个文件的文件压缩"
end if
ifsysflags和fs _ vol _的additem“整个磁盘卷已压缩”
end if
end if
end sub
Private Sub Form_Load()
调用Drive1_Change
End Sub
运行后,在驱动器列表框中选择不同的驱动器,列表框中将显示该驱动器的相应信息。以上程序运行于VB5.0、VB6.0和WINDOWS 98。
位律师回复
0条评论