|
|

楼主 |
发表于 2020-4-6 17:27:10
|
显示全部楼层
技巧183 使用API取得硬盘信息
1 D/ j3 E4 R% _
% @, @1 b: [) {, ^4 ^3 N0 I- Private Const MAX_IDE_DRIVES As Long = 4; \: C2 K# V9 f! |' U9 j4 g' C y
- Private Const READ_ATTRIBUTE_BUFFER_SIZE As Long = 5122 Z5 y& a* ?3 c
- Private Const IDENTIFY_BUFFER_SIZE As Long = 5127 D* H" }& h. f# ]0 G$ e
- Private Const READ_THRESHOLD_BUFFER_SIZE As Long = 512# e: L4 n6 U" M/ \/ k
- Private Const DFP_GET_VERSION As Long = &H74080
' s1 {0 F4 e! T* y - Private Const DFP_SEND_DRIVE_COMMAND As Long = &H7C084
) w3 @7 {6 |- c( x1 S1 C - Private Const DFP_RECEIVE_DRIVE_DATA As Long = &H7C088" m: V" u+ Q6 W6 ~& e6 Y
- ' ……代码略,详见附件2 G$ {2 M; r( _# `, {+ d" d$ L
- '取得硬盘信息:型号/物理系列号(唯一)
9 X; t d4 T% L! s. q( |- Z - Function GetHardDiskInfo(Optional ByVal numDisk As eumDiskNo = hdPrimaryMaster, Optional ByVal numType As eumInfoType = hdOnlySN) As String
* W9 f* u/ j" o+ G; x. e8 q - If GetDiskInfo(numDisk) = 1 Then
* L0 P! w' Z$ e4 Y, ^+ T - Dim pSerialNumber As String, pModelNumber As String
0 N2 W0 h& Z* w* G+ t- S( |6 k/ a - pSerialNumber = StrConv(m_DiskInfo.sSerialNumber, vbUnicode)
: y- B2 P4 j- N- o1 N$ {* S- D - pModelNumber = StrConv(m_DiskInfo.sModelNumber, vbUnicode)9 ]" J( D k5 ~- C5 ~
- Select Case numType
- y" _# K) N" P; B* j5 x. X - Case hdOnlyModel '仅型号! r8 c) T# E# T" A
- GetHardDiskInfo = Trim(pModelNumber)
1 n( g2 ^" a/ y - Case hdOnlySN '仅系列号
9 L# ]% f0 a+ W+ Z6 W - GetHardDiskInfo = Trim(pSerialNumber)
+ s' c4 y+ m" d6 q# j+ t - Case Else '型号,系列号
) _' M0 n x; z1 Y2 `7 ?$ w6 e - GetHardDiskInfo = Trim(pModelNumber) & "," & Trim(pSerialNumber)6 r6 E R, z2 q+ L
- End Select4 T/ P3 w7 m' W7 w3 {7 H1 a& d
- End If
3 D( F1 X$ c( S# ]9 H - End Function
复制代码- Sub DiskId()
7 O& l; k# i+ A; H# D3 c% L - MsgBox "硬盘的物理系列号:" & GetHardDiskInfo(hdPrimaryMaster, hdOnlySN) _
" `2 u: u3 D! R( \4 x - & Chr(13) & "C盘的序列号:" & GetDiskVolume("C")
2 x8 V/ d: Y0 j5 c$ s. D8 t - End Sub$ B: {5 y6 a4 v' P
复制代码 取得硬盘物理序号
diskid.xls
(78 KB, 下载次数: 0, 售价: 10 个金币)
( l9 I" s5 x8 ~. _
1 [$ @9 ^3 Z* X9 J0 p |
|