|
|

楼主 |
发表于 2020-4-6 17:27:10
|
显示全部楼层
技巧183 使用API取得硬盘信息
. v4 ]/ Q9 X: i3 B- F9 l2 }
* m/ E7 }- F6 c! R- Private Const MAX_IDE_DRIVES As Long = 40 }5 r9 Q2 R* H! d6 N2 d* y& e
- Private Const READ_ATTRIBUTE_BUFFER_SIZE As Long = 512
* E* |+ n* W( s- m+ w - Private Const IDENTIFY_BUFFER_SIZE As Long = 512# j B% V$ v' Y
- Private Const READ_THRESHOLD_BUFFER_SIZE As Long = 5125 ]% r ?$ s# }
- Private Const DFP_GET_VERSION As Long = &H74080
2 |! ]. Y8 A) Q d" u4 R - Private Const DFP_SEND_DRIVE_COMMAND As Long = &H7C084& b& Q3 _2 w- P% n4 Z. n" v8 l5 k
- Private Const DFP_RECEIVE_DRIVE_DATA As Long = &H7C0885 W1 e( U* K$ Y# Z& i. d5 |
- ' ……代码略,详见附件" s# R) G( ?' [. f
- '取得硬盘信息:型号/物理系列号(唯一)1 M! n- ]$ B( S/ P
- Function GetHardDiskInfo(Optional ByVal numDisk As eumDiskNo = hdPrimaryMaster, Optional ByVal numType As eumInfoType = hdOnlySN) As String; K5 x7 v. C+ s' [# N# N+ Y3 l
- If GetDiskInfo(numDisk) = 1 Then
1 F6 A: ]) r( l$ L6 r - Dim pSerialNumber As String, pModelNumber As String4 R4 L* I+ G' r- W. p' |
- pSerialNumber = StrConv(m_DiskInfo.sSerialNumber, vbUnicode)6 I( V5 v# |( K( g+ D- ~
- pModelNumber = StrConv(m_DiskInfo.sModelNumber, vbUnicode)
7 t6 N2 I3 A" c" p; B - Select Case numType2 T% M0 Y; y! R }& B+ |
- Case hdOnlyModel '仅型号
, o5 [3 L) {, b - GetHardDiskInfo = Trim(pModelNumber)/ Z* P/ z' @- ? P
- Case hdOnlySN '仅系列号
5 d* E7 a' B. o+ `# h+ F- N& r! l. e - GetHardDiskInfo = Trim(pSerialNumber)2 y% y: z3 {2 N# E' a! b8 d& r
- Case Else '型号,系列号+ x; `1 r- c( _/ q
- GetHardDiskInfo = Trim(pModelNumber) & "," & Trim(pSerialNumber)
; C/ R) i! Z+ M - End Select) m1 r6 \! |' O' T: r) t; t
- End If6 g4 S4 s0 w4 a# B: V& a: ?
- End Function
复制代码- Sub DiskId()
$ p# |- |5 Q2 W/ ] - MsgBox "硬盘的物理系列号:" & GetHardDiskInfo(hdPrimaryMaster, hdOnlySN) _( [6 j7 Z: S/ D& j* g9 [- C3 _& Q" b
- & Chr(13) & "C盘的序列号:" & GetDiskVolume("C")
$ h% r4 Q9 n# V' s- @, `" b2 O - End Sub. [3 b: n$ }- G8 t* Y- F
复制代码 取得硬盘物理序号
diskid.xls
(78 KB, 下载次数: 0, 售价: 10 个金币)
9 t- [4 B, j) r0 y) [
% F7 O. X8 H. U6 \6 ?+ W6 u
|
|