找回密码
 加入
搜索
查看: 2274|回复: 3

[系统综合] win7如何监控 usb

[复制链接]
发表于 2013-1-17 15:36:58 | 显示全部楼层 |阅读模式
求救,win7下如何健康usb啊?之前的方法在xp下没问题,但是到win7下就不行了。
发表于 2013-1-17 15:51:48 | 显示全部楼层
WM_DEVICECHANGE 也不行了吗?
发表于 2013-1-17 17:26:45 | 显示全部楼层
循环检测USB~或者注册一个函数检测USB
发表于 2013-1-17 23:55:04 | 显示全部楼层

#include <winapiex.au3>
;Global Const $WM_DEVICECHANGE = 537 ;设备发生改变
Global Const $DBT_DEVICEARRIVAL = 0x8000 ;设备插入
Global Const $DBT_DEVICEREMOVECOMPLETE = 0x8004 ;设备移除

GUIRegisterMsg($WM_DEVICECHANGE, 'My_Message_Test')

GUICreate("Test", 400, 300)
GUISetState()

Do
Until GUIGetMsg() = -3

Func My_Message_Test($hWnd, $Msg, $wParam, $lParam)        
        Switch $wParam
                Case $DBT_DEVICEARRIVAL
                        Local $_DEV_BROADCAST_HDR = DllStructCreate("int dbch_size; int dbch_devicetype; int dbch_reserved;", $lParam)
                        If DllStructGetData($_DEV_BROADCAST_HDR, "dbch_devicetype") = 2 Then
                                Local Const $DEV_BROADCAST_VOLUME = DllStructCreate("int dbcv_size; int dbcv_devicetype; int dbcv_reserved; int dbcv_unitmask; word dbcv_flags", $lParam)
                                Local Const $unitMask = DllStructGetData($DEV_BROADCAST_VOLUME, "dbcv_unitmask")
                                $drivers=get_driverflag($unitMask)
                                $GUID = _WinAPI_GetVolumeNameForVolumeMountPoint($drivers & '\')
                                if DriveGetType($drivers&"\")="Removable" then MsgBox(0, '提示!', '检测到设备插入 - ' & $drivers&@crlf&$GUID&@CRLF)
                        EndIf
                        
                Case $DBT_DEVICEREMOVECOMPLETE
                        MsgBox(0, '提示!', '检测到设备被移除 - ' & $lParam)
        EndSwitch
EndFunc   ;==>My_Message_Test

Func get_driverflag($unitMask)
        Local $Count = 0
        Local $Pom = Round($unitMask / 2)

        While $Pom > 0
                $Pom = BitShift($Pom, 1)
                $Count += 1
        WEnd

        If $Count >= 1 And $Count <= 26 Then
                Return Chr(65 + $Count) & ":"
        Else
                Return '?'
        EndIf
EndFunc   ;==>get_driverflag
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-5-13 17:10 , Processed in 0.074095 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表