|
|

楼主 |
发表于 2020-4-6 17:27:10
|
显示全部楼层
技巧183 使用API取得硬盘信息
: ~; Q7 \2 |$ V3 _0 {7 c! s' V" x+ j! Y3 M5 @! u. U
- Private Const MAX_IDE_DRIVES As Long = 47 z/ a, O. G7 _5 H
- Private Const READ_ATTRIBUTE_BUFFER_SIZE As Long = 512
) u% C$ o* ]( P& d, J! v - Private Const IDENTIFY_BUFFER_SIZE As Long = 512
" G) ~! O. e J6 a - Private Const READ_THRESHOLD_BUFFER_SIZE As Long = 512
, H6 ^0 _3 W0 r6 B - Private Const DFP_GET_VERSION As Long = &H74080
8 T( h* `4 o: ]. k* f& T - Private Const DFP_SEND_DRIVE_COMMAND As Long = &H7C084
! }+ H! _" S: P i5 v - Private Const DFP_RECEIVE_DRIVE_DATA As Long = &H7C088
# S$ V) r, P* H% R, M6 | - ' ……代码略,详见附件+ f4 X" N' K1 A6 i' ^0 L
- '取得硬盘信息:型号/物理系列号(唯一)8 V# z F" |5 V+ R( \
- Function GetHardDiskInfo(Optional ByVal numDisk As eumDiskNo = hdPrimaryMaster, Optional ByVal numType As eumInfoType = hdOnlySN) As String
" `& P6 |* x. [9 M* R* _ - If GetDiskInfo(numDisk) = 1 Then/ e- k h# Q, v' g& m" r. T* U
- Dim pSerialNumber As String, pModelNumber As String
, y3 S% x8 @; g - pSerialNumber = StrConv(m_DiskInfo.sSerialNumber, vbUnicode)
& W* W, C& h0 s' J6 D - pModelNumber = StrConv(m_DiskInfo.sModelNumber, vbUnicode)
% v& X6 ~% h# k - Select Case numType$ |4 [% r9 L5 x( V/ C/ P
- Case hdOnlyModel '仅型号4 q% B+ v3 A5 u& \
- GetHardDiskInfo = Trim(pModelNumber)# r+ P% b% @ g
- Case hdOnlySN '仅系列号8 d- T- t2 v6 S8 K% G. {7 m! [/ ~# U# A
- GetHardDiskInfo = Trim(pSerialNumber)
+ y% p7 z- G! k, y9 x& n" R - Case Else '型号,系列号: T1 j# G/ l( ~4 i9 E
- GetHardDiskInfo = Trim(pModelNumber) & "," & Trim(pSerialNumber)+ W0 v4 l9 ?" ]7 U8 _+ u# [
- End Select8 n+ l: h( G1 f' }/ p. t; ?
- End If4 w; M" G, L: m$ g, D$ n6 ^7 O
- End Function
复制代码- Sub DiskId()
$ [( t8 |) h) o+ @% x h1 Y$ ] - MsgBox "硬盘的物理系列号:" & GetHardDiskInfo(hdPrimaryMaster, hdOnlySN) _/ O! s. D' K5 @( _9 k4 ~
- & Chr(13) & "C盘的序列号:" & GetDiskVolume("C"). j$ d9 Z# ]9 F! Z+ X- q
- End Sub
+ c3 s3 X4 P; _3 ~
复制代码 取得硬盘物理序号
diskid.xls
(78 KB, 下载次数: 0, 售价: 10 个金币)
) }/ W; H! D' N5 b7 G0 P+ p9 w/ W0 [8 B. k$ [( c
|
|