|
楼主 |
发表于 2009-6-15 08:32
|
显示全部楼层
第11部分 其他应用
技巧183 使用API取得硬盘信息
在VBA中可以使用API函数取得逻辑盘序列号和唯一的物理系列号,如下面的代码所示。- #001 Private Const MAX_IDE_DRIVES As Long = 4
- #002 Private Const READ_ATTRIBUTE_BUFFER_SIZE As Long = 512
- #003 Private Const IDENTIFY_BUFFER_SIZE As Long = 512
- #004 Private Const READ_THRESHOLD_BUFFER_SIZE As Long = 512
- #005 Private Const DFP_GET_VERSION As Long = &H74080
- #006 Private Const DFP_SEND_DRIVE_COMMAND As Long = &H7C084
- #007 Private Const DFP_RECEIVE_DRIVE_DATA As Long = &H7C088
- #008 ……代码略,详见附件
- #009 '取得硬盘信息:型号/物理系列号(唯一)
- #010 Function GetHardDiskInfo(Optional ByVal numDisk As eumDiskNo = hdPrimaryMaster, Optional ByVal numType As eumInfoType = hdOnlySN) As String
- #011 If GetDiskInfo(numDisk) = 1 Then
- #012 Dim pSerialNumber As String, pModelNumber As String
- #013 pSerialNumber = StrConv(m_DiskInfo.sSerialNumber, vbUnicode)
- #014 pModelNumber = StrConv(m_DiskInfo.sModelNumber, vbUnicode)
- #015 Select Case numType
- #016 Case hdOnlyModel '仅型号
- #017 GetHardDiskInfo = Trim(pModelNumber)
- #018 Case hdOnlySN '仅系列号
- #019 GetHardDiskInfo = Trim(pSerialNumber)
- #020 Case Else '型号,系列号
- #021 GetHardDiskInfo = Trim(pModelNumber) & "," & Trim(pSerialNumber)
- #022 End Select
- #023 End If
- #024 End Function
复制代码 代码解析;
使用API函数取得逻辑盘序列号和唯一的硬盘物理系列号,其中GetDiskVolume函数过程取得逻辑盘序列号,GetHardDiskInfo函数过程取得唯一的硬盘物理系列号。
调用此函数的代码如下。- #001 Sub DiskId()
- #002 MsgBox "硬盘的物理系列号:" & GetHardDiskInfo(hdPrimaryMaster, hdOnlySN) _
- #003 & Chr(13) & "C盘的序列号:" & GetDiskVolume("C")
- #004 End Sub
复制代码 运行DiskId过程,使用消息框显示硬盘信息,如图所示。
|
|