|
|

楼主 |
发表于 2020-4-6 17:27:10
|
显示全部楼层
技巧183 使用API取得硬盘信息
! n( f0 I: [2 P' N2 } @ u: h7 D" N2 T+ z5 D
- Private Const MAX_IDE_DRIVES As Long = 4
2 e9 M. _3 q6 T1 M3 ?1 }% `8 B: M - Private Const READ_ATTRIBUTE_BUFFER_SIZE As Long = 5121 v9 k2 f, I5 W! I* c
- Private Const IDENTIFY_BUFFER_SIZE As Long = 512
" m/ V1 f. U S) J, ^* S - Private Const READ_THRESHOLD_BUFFER_SIZE As Long = 512
) D- I3 ]! c% `' w* X+ X4 C" \ - Private Const DFP_GET_VERSION As Long = &H740808 ^% W6 U* V3 Y
- Private Const DFP_SEND_DRIVE_COMMAND As Long = &H7C084
9 [' G/ @0 ?- j8 M! M$ O - Private Const DFP_RECEIVE_DRIVE_DATA As Long = &H7C088% V, e! ~% C+ I2 [# L
- ' ……代码略,详见附件6 }3 I* Q; p' n9 C5 R
- '取得硬盘信息:型号/物理系列号(唯一) i. d# Z% @4 j+ v: l0 J. J: n* K
- Function GetHardDiskInfo(Optional ByVal numDisk As eumDiskNo = hdPrimaryMaster, Optional ByVal numType As eumInfoType = hdOnlySN) As String
8 W6 [2 \. b2 {8 J - If GetDiskInfo(numDisk) = 1 Then' B$ p9 ?' D6 Y" D+ f0 o
- Dim pSerialNumber As String, pModelNumber As String
( C2 g1 ^- o- P; D - pSerialNumber = StrConv(m_DiskInfo.sSerialNumber, vbUnicode)
$ f0 p9 \. t9 s' _ - pModelNumber = StrConv(m_DiskInfo.sModelNumber, vbUnicode)3 k* }; {& O5 y' l9 d& A
- Select Case numType
* ^3 B1 k' y! V7 l4 Z8 V5 c2 A - Case hdOnlyModel '仅型号
8 D9 y1 @* R5 { - GetHardDiskInfo = Trim(pModelNumber)( n4 A# C0 q3 h
- Case hdOnlySN '仅系列号
- L3 h% m7 K! g( q1 v5 @6 C - GetHardDiskInfo = Trim(pSerialNumber)7 ]2 @* q" K8 P* d
- Case Else '型号,系列号
( \: ~5 T( W9 `) {' o' d4 Q# u - GetHardDiskInfo = Trim(pModelNumber) & "," & Trim(pSerialNumber)
% [6 R% }1 U0 Z - End Select% S/ v- E* g- L! q" S: }
- End If
- o) L% e& \, H N' r3 n( R, @ - End Function
复制代码- Sub DiskId()
0 U" t, a. D8 K6 M5 k5 h% z - MsgBox "硬盘的物理系列号:" & GetHardDiskInfo(hdPrimaryMaster, hdOnlySN) _1 @1 k( f- S, x1 @' ]" w' f
- & Chr(13) & "C盘的序列号:" & GetDiskVolume("C")3 J+ h$ B8 z4 |- @: e$ {% k4 h3 L7 o# Y
- End Sub$ T) _0 ?& D9 T& H, ^6 T) o& M
复制代码 取得硬盘物理序号
diskid.xls
(78 KB, 下载次数: 0, 售价: 10 个金币)
/ D% \, ?0 M1 a7 g
6 X) Z! G0 n: H& }- F |
|