|
|

楼主 |
发表于 2020-4-6 17:27:10
|
显示全部楼层
技巧183 使用API取得硬盘信息
: V/ D v! D, j! }/ I ], ?% x2 E9 S% C% a" \5 v
- Private Const MAX_IDE_DRIVES As Long = 4
1 k! ^# i/ X6 @9 L. f5 z - Private Const READ_ATTRIBUTE_BUFFER_SIZE As Long = 512$ B. B% F0 {; ?. {# C9 {9 ~) Y
- Private Const IDENTIFY_BUFFER_SIZE As Long = 512
1 D/ Y$ n- W# k1 c1 C7 Q- [ - Private Const READ_THRESHOLD_BUFFER_SIZE As Long = 512: C8 R5 G+ x4 P& n% ~' K$ k
- Private Const DFP_GET_VERSION As Long = &H74080+ `9 B% b$ H9 ] G
- Private Const DFP_SEND_DRIVE_COMMAND As Long = &H7C084
" l) z: W; }( n: z& c - Private Const DFP_RECEIVE_DRIVE_DATA As Long = &H7C088: k) f! v4 ?4 L; @0 L
- ' ……代码略,详见附件
1 X; ~; Z% e% M$ c - '取得硬盘信息:型号/物理系列号(唯一)
$ {3 G M9 o6 L. P% z+ ~- Z - Function GetHardDiskInfo(Optional ByVal numDisk As eumDiskNo = hdPrimaryMaster, Optional ByVal numType As eumInfoType = hdOnlySN) As String- |1 j% V' D! m5 q+ M! J( Q( |
- If GetDiskInfo(numDisk) = 1 Then
' A4 x2 b- n' k$ Z - Dim pSerialNumber As String, pModelNumber As String2 z) ~0 Z6 F9 B2 \4 a/ I7 W
- pSerialNumber = StrConv(m_DiskInfo.sSerialNumber, vbUnicode) s8 `) ^' ]) o9 P& @# A
- pModelNumber = StrConv(m_DiskInfo.sModelNumber, vbUnicode)
9 O$ G: T6 x$ m - Select Case numType$ {' x, T2 l$ C
- Case hdOnlyModel '仅型号
$ y# |1 h( n$ G5 ` - GetHardDiskInfo = Trim(pModelNumber)
- }. v2 A. ~5 C& n - Case hdOnlySN '仅系列号
' k4 g% q- I4 E. Q- L! k' L - GetHardDiskInfo = Trim(pSerialNumber)
- B* f1 ]. A8 W4 X6 d" ] - Case Else '型号,系列号
" K7 g2 }+ `/ d( c - GetHardDiskInfo = Trim(pModelNumber) & "," & Trim(pSerialNumber)
6 V, K/ [2 W+ }- I9 m" W; ~ - End Select# |0 X: Q: ~1 y5 [% v& q& T! X
- End If
* f7 m, j3 O- ]% g; X0 D - End Function
复制代码- Sub DiskId()
4 ^8 \4 l$ w0 D5 g. m% z - MsgBox "硬盘的物理系列号:" & GetHardDiskInfo(hdPrimaryMaster, hdOnlySN) _
0 b# r+ k5 D( [6 s0 | - & Chr(13) & "C盘的序列号:" & GetDiskVolume("C")
: d. F6 n# y0 z& ?2 \4 N1 C - End Sub( H s- a% [' V% l, y- k0 i0 y, X
复制代码 取得硬盘物理序号
diskid.xls
(78 KB, 下载次数: 0, 售价: 10 个金币)
* L6 r/ y& ]" l% i
8 E8 Q8 B8 t7 h8 E9 U
|
|