|
|

楼主 |
发表于 2020-4-6 17:27:10
|
显示全部楼层
技巧183 使用API取得硬盘信息
: l+ u" l+ S& m {& l4 W& |' U' K* ?
/ ~ M: n2 F0 y- Private Const MAX_IDE_DRIVES As Long = 4
7 r- ^8 C2 x, S( j% q1 v - Private Const READ_ATTRIBUTE_BUFFER_SIZE As Long = 512! D) F* Z4 S1 D5 g4 f# d3 y
- Private Const IDENTIFY_BUFFER_SIZE As Long = 512
% a* b0 P& U! l, p- f - Private Const READ_THRESHOLD_BUFFER_SIZE As Long = 512
0 \. f. q+ b# g2 O9 C - Private Const DFP_GET_VERSION As Long = &H74080* }/ ^8 |% \: @
- Private Const DFP_SEND_DRIVE_COMMAND As Long = &H7C0848 S/ z) }1 @& }5 L
- Private Const DFP_RECEIVE_DRIVE_DATA As Long = &H7C088
3 n- y/ E0 |) l- m6 e - ' ……代码略,详见附件9 T, c+ J+ T! H% o7 s
- '取得硬盘信息:型号/物理系列号(唯一)
2 w$ y, \, z) a7 Q8 u+ j" o - Function GetHardDiskInfo(Optional ByVal numDisk As eumDiskNo = hdPrimaryMaster, Optional ByVal numType As eumInfoType = hdOnlySN) As String6 P- b0 I- Y6 k8 c- v4 F$ A
- If GetDiskInfo(numDisk) = 1 Then
3 }8 g# @( y u/ X# }7 a! ?: I - Dim pSerialNumber As String, pModelNumber As String
2 N* t* Z% A# s/ X5 {8 c. v& z - pSerialNumber = StrConv(m_DiskInfo.sSerialNumber, vbUnicode)# F) Y1 _9 X p0 L4 z
- pModelNumber = StrConv(m_DiskInfo.sModelNumber, vbUnicode)9 Q4 @ A/ t, M$ d+ @$ D
- Select Case numType3 E/ \: `* Z) t+ }- W4 U" k
- Case hdOnlyModel '仅型号
t. t9 `/ C0 d3 v" d8 U - GetHardDiskInfo = Trim(pModelNumber)9 N: O6 \( f( B3 ~7 Q; P# S
- Case hdOnlySN '仅系列号
! b3 f# w* V5 G6 E5 m' k& F8 M( d2 [ - GetHardDiskInfo = Trim(pSerialNumber)
0 C, G, |" V( X! e - Case Else '型号,系列号% T, \* k/ h+ l. g
- GetHardDiskInfo = Trim(pModelNumber) & "," & Trim(pSerialNumber)& r4 T4 Y4 H0 e- P# n. V, v2 Q0 h: G
- End Select1 x" J& A: `0 J6 V+ H! b
- End If3 s9 n9 _3 h8 n5 i) P" K+ ~
- End Function
复制代码- Sub DiskId()
8 T0 L5 U/ N% |( z0 S6 Q: r - MsgBox "硬盘的物理系列号:" & GetHardDiskInfo(hdPrimaryMaster, hdOnlySN) _
3 F' _9 A& W0 ^, i4 r* c - & Chr(13) & "C盘的序列号:" & GetDiskVolume("C")2 {- J( f6 t) d, H
- End Sub2 `4 d" \* T: t0 W9 q
复制代码 取得硬盘物理序号
diskid.xls
(78 KB, 下载次数: 0, 售价: 10 个金币)
! ?5 H( A" H6 S/ S
8 J' M- m0 y7 G# R2 O
|
|