如何监控usb设备插入和拔出
如何监控usb设备插入和拔出 usb设备不一定是u盘类的 截获系统消息:WM_DEVICECHANGE 哎。。。HOOK实在是不会啊凑合吧Local $colItems, $Ndevid, $Odevid$strComputer = "localhost"
$objWMIService = ObjGet("winmgmts:\\" & $strComputer & "\root\CIMV2")
While 1
$colItems = $objWMIService.ExecQuery("SELECT * FROM Win32_USBControllerDevice", "WQL", 48)
If IsObj($colItems) Then
For $objItem In $colItems
$tmp = StringRegExpReplace($objItem.Dependent, ".*?DeviceID=", "")
If @extended Then $Ndevid &= $tmp & @LF
Next
;~ ToolTip($Odevid)
If $Odevid <> "" Then
If StringLen($Ndevid) > StringLen($Odevid) Then
ToolTip("in")
ElseIf StringLen($Ndevid) < StringLen($Odevid) Then
ToolTip("out")
EndIf
EndIf
$Odevid = $Ndevid
$Ndevid = ""
Else
MsgBox(0, "", "err")
EndIf
Sleep (100)
WEnd 回复 3# zch11230
十分感谢啊如何能显示插入设备的名称啊 {:face (332):} 学习了,WMI真强大 hook hook 钩一下吗哈哈 枚举下然后监控就行了 建议搞一个SQL server 数据库 强大啊,没想到autoit功能这么强。 Global Const $WM_DEVICECHANGE = 537 ;设备发生改变
Global Const $DBT_DEVICEARRIVAL = 0x8000 ;设备插入
Global Const $DBT_DEVICEREMOVECOMPLETE = 0x8004 ;设备移除
GUIRegisterMsg($WM_DEVICECHANGE, 'My_Message_Test')
GUICreate('')
Do
Until GUIGetMsg() = -3
Func My_Message_Test($hWnd, $Msg, $wParam, $lParam)
Switch $wParam
Case $DBT_DEVICEARRIVAL
MsgBox(0, '提示!', '检测到设备插入 - ' & $lParam)
Case $DBT_DEVICEREMOVECOMPLETE
MsgBox(0, '提示!', '检测到设备被移除 - ' & $lParam)
EndSwitch
EndFunc ;==>My_Message_Test 水木子 发表于 2014-2-26 19:17
大佬。这个有法在插入之后获取到他的硬件ID不呢
页:
[1]