|
虽然简单,但是实用
( x! c9 z. L5 c0 Y2 I+ i, xHDEVINFO hDevInfo;
* C6 b& m' L. E) N! \% F2 z9 ?" n SP_DEVINFO_DATA DeviceInfoData;/ j! c3 x- r+ f# {3 m
DWORD i,j;
& w3 |5 |+ i1 w4 V. } int ret=0;2 I5 N; A) t2 _2 W
* i7 M! B1 u" H) y( E) d9 A, @ hDevInfo = SetupDiGetClassDevs((LPGUID) &GUID;_DEVCLASS_MOUSE, 0, 0,DIGCF_PRESENT);//DIGCF_PROFILE);//
* G8 o2 F" A( u% c& z; ^ N; L/*
, }: Z9 h- P8 d' i2 Q- Q' ~$ r GUID_DEVCLASS_FDC软盘控制器
+ M# Q+ T6 ]% N+ A4 r GUID_DEVCLASS_DISPLAY显示卡
: x/ m8 ]9 d! ]- W9 @0 e GUID_DEVCLASS_CDROM光驱$ R& G1 U. Q" R A$ s
GUID_DEVCLASS_KEYBOARD键盘
' x# D0 R1 B* A6 M$ c/ h/ s GUID_DEVCLASS_COMPUTER计算机 P1 O0 @! l" J% l1 l- }+ n
GUID_DEVCLASS_SYSTEM系统
7 h2 d8 ^" R0 q. `' Y4 ] GUID_DEVCLASS_DISKDRIVE磁盘驱动器
% h8 ~1 e2 o) ~5 [ GUID_DEVCLASS_MEDIA声音、视频和游戏控制器
. E/ d. A2 [9 u! v4 V! Y9 U, {+ v GUID_DEVCLASS_MODEMMODEM+ J4 L. n7 {3 H m
GUID_DEVCLASS_MOUSE鼠标和其他指针设备
+ Y: ~+ p7 R- r( f& I/ m GUID_DEVCLASS_NET网络设备器3 i6 g- g' C V' D5 r2 ?5 `
GUID_DEVCLASS_USB通用串行总线控制器
2 I3 x/ V- s' [! [4 \9 c GUID_DEVCLASS_FLOPPYDISK软盘驱动器$ z- T* _* e0 @* c. U9 ?
GUID_DEVCLASS_UNKNOWN未知设备" y4 h# J/ r. }3 |5 M
GUID_DEVCLASS_SCSIADAPTERSCSI 和 RAID 控制器" `9 ]$ H3 p" I& T. \8 ?- g, [. K
GUID_DEVCLASS_HDCIDE ATA/ATAPI 控制器
. n6 j( W- ?3 ` \! V GUID_DEVCLASS_PORTS端口(COM 和 LPT)
; D1 X L+ d3 n6 r+ ^& w4 E* s GUID_DEVCLASS_MONITOR监视器/ h* {/ c+ W% n' t& Z$ ]" R2 f% i* X/ V
*/+ Q( A0 v. g( G4 r2 \, V
if (hDevInfo == INVALID_HANDLE_VALUE){
; M7 z: D# F; S // Insert error handling here.
* N9 L5 x& @' c* i4 L8 \1 z // return ;
: M8 s1 W( k8 a8 t1 ]! y }
& c& k$ g' G( k: z) M2 B// Enumerate through all devices in Set.
. N* d6 D- [, R. T9 a DeviceInfoData.cbSize = sizeof(SP_DEVINFO_DATA);
' m, O+ p% D; F8 Q u3 Y for (i=0;SetupDiEnumDeviceInfo(hDevInfo,i,&DeviceInfoData;);i++) {
- {! T: \ x n F K( s
* L. E F( ~2 @7 H- u DWORD DataT;2 i h. G( J( b k: r% Z) q
//LPTSTR buffer = NULL;: c0 }3 N6 P! Q; [0 |
char buffer[2048];' _0 e+ s/ `! K4 m# y" C
DWORD buffersize =sizeof(buffer);
! ? H: _7 k8 j# i1 N3 U+ I( |. ^ while (!SetupDiGetDeviceRegistryProperty( hDevInfo, &DeviceInfoData;, SPDRP_FRIENDLYNAME, &DataT;, (PBYTE)buffer, buffersize, &buffersize;))) ~& l- U: h2 Y
{
! |# R; h$ |+ z) E# [ if (GetLastError() == ERROR_INSUFFICIENT_BUFFER)3 A/ ?& w0 \* D4 ?* R% v
{
$ m0 k( `& A: [+ d. a9 t9 U // Change the buffer size.
6 ]5 p6 h$ W+ W: b. ^9 r //if (buffer) LocalFree(buffer);; S* j* B* L1 k& E! _/ Z
//buffer = (PSP_INF_INFORMATION)LocalAlloc(LPTR,buffersize);0 ~: t6 m, H! y: U- S# f5 ~$ M
// <!--[if !supportEmptyParas]--><!--[endif]-->
2 [( T$ P+ A- y }% K( k! c M5 H
else {
5 ^: w& Y9 Q2 L8 t: m f% F+ B, m6 x7 @, e9 j" p
// Insert error handling here.5 R I% f1 M' Q
break;. l1 I, X6 Z6 }1 w5 t2 T, V
}7 {: Z) Q# L* s$ x
}9 r" F! V5 h& E$ Y* r
if (buffer != NULL && i == 0)2 L: Z5 q& W |: P- Q' L* Y' A" u1 x
{
( D$ M/ t; N2 v// temp.Format("");
9 @$ B- _8 k5 W' S; i// str += temp;
8 ~ G5 L; c+ |- } }/ N2 u% E4 Z8 X4 F1 D6 K: |( X' i
// temp.Format("%s",buffer);
' ]1 B6 ~ k& r3 A6 ^ C// str += temp;
& X5 L0 _: n- M. S1 i W, c% h if (buffer) Lo' F) G; V P/ `6 Q! F
4 v! K( j, P7 D) R
( E; q- M5 H2 [8 u: ^; u
资源下载地址和密码(百度云盘): [/hide] 百度网盘信息回帖可见
6 Y+ D. Q0 j x. ^( ^7 X. Z
& [+ X+ v$ x9 D+ }, y
) K2 C6 a2 J/ R# P3 J j4 U, M$ f
$ R8 T2 i$ R- f" B' K) j本资源由Java自学网收集整理【www.javazx.com】 |
|