VB 版 (精华区)
发信人: liujq (天高任我飞), 信区: VisualBasic
标 题: 在VB5中获取硬盘的卷标和序列号
发信站: 紫 丁 香 (Sun Nov 14 19:13:42 1999), 转信
电脑工作室
出版日期:99
-9-20 总期号:859 本年期号:69
在VB5中获取硬盘的卷标和序列号
张建宇
我们在用Visual Basic开发程序时,有时需要知道当前硬盘的卷标和序列号等信息,
如在对VB程序
加密时。本文将介绍通过调用GetVolumeInformation()API函数来获得这些信息。
1.函数的声明及变量的意义
Declare Function GetVolumeInformation Lib ″kernel32″ _
Alias ″GetVolumeInformationA″ (ByVal lpRootPathName As String, _
ByVal lpVolumeNameBuffer As String, ByVal nVolumeNameSize As Long, _
lpVolumeSerialNumber As Long, lpMaximumComponentLength As Long, _
lpFileSystemFlags As Long, ByVal lpFileSystemNameBuffer As String, _
ByVal nFileSystemNameSize As Long) As Long
lpRootPathName
带根目录标
记的磁盘符
号
lpVolumeNameBuffer
卷标的缓冲
区
nVolumeNameSize
卷标缓冲区
的大小
lpVolumeSerialNumber
磁盘序列号
lpMaximumComponentLength
最大文件名
的长度
lpFileSystemFlags
压缩盘标记
lpFileSystemNameBuffer
文件系统名
称缓冲区
nFileSystemNameSize
文件系统名
称缓冲区大
小
2.程序实例
新建工程,在窗体上创建具有如下属性的两个标签控件和两个文本框控件。
控件
名称
属
性
值
label1
lblVolumeName
″
卷
标
″
label2
lblSerialNumber
″
序
列
号
″
text1
txtSerialNumber
text2
txtVolumeName
程序源代码如下:
Private Declare Function GetVolumeInformation Lib ″kernel32″ _
Alias ″GetVolumeInformationA″ (ByVal lpRootPathName As String, _
ByVal lpVolumeNameBuffer As String, ByVal nVolumeNameSize As Long, _
lpVolumeSerialNumber As Long, lpMaximumComponentLength As Long, _
lpFileSystemFlags As Long, ByVal lpFileSystemNameBuffer As String, _
ByVal nFileSystemNameSize As Long) As Long
Private Sub Form_Load()
Dim DriveName As String
Dim VolumeName As String
Dim SerialNumber As Long
Dim FileSystemName As String
DriveName = ″C:\″
VolumeName = String(255, Chr(0))
′初始化卷标缓冲区
FileSystemName = String(255, Chr(0))
′初始化文件系统名称缓冲区
GetVolumeInformation DriveName, VolumeName, _
Len(VolumeName), SerialNumber, 0, 0, FileSystemName, Len(FileSystemName)
txtVolumeName = Left(VolumeName, InStr(1, VolumeName, Chr(0)) - 1)
′去掉多余的空格
txtSerialNumber = Hex(SerialNumber)
′用十六进制显示卷标
End Sub
运行该程序,即可在文本框中显示指定磁盘的序列号和卷标。
--
※ 来源:.紫 丁 香 bbs.hit.edu.cn.[FROM: 202.118.229.84]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:2.124毫秒