VB USB接口监控功能实现

VB 的 USB 监控功能其实挺实用的,尤其做设备管理或搞点自动化工具的时候。通过监听WM_DEVICECHANGE消息,基本就能搞定 U 盘的插拔提示。代码也不复杂,重写个WndProc就能拦住系统消息,弹个框提示一下插入还是拔出——调试起来也蛮直观的。

USB 插入的时候系统会发DBT_DEVICEARRIVAL,拔出时是DBT_DEVICEREMOVECOMPLETE,你只要判断下WParam就行了。下面这段代码就是个简单示例:

Public Class Form1
  Private Const WM_DEVICECHANGE As Integer = &H219
  
  Protected Overrides Sub WndProc(ByRef m As Message)
    If m.Msg = WM_DEVICECHANGE Then
      If m.WParam.ToInt32() And &H8000 Then
        MsgBox("USB 设备已被拔出")
      ElseIf m.WParam.ToInt32() And &H2 Then
        MsgBox("USB 设备已插入")
      End If
    End If
    MyBase.WndProc(m)
  End Sub
End Class

啦,这只是最基础的实现。想进一步识别设备类型,或者自动拷文件什么的,就得用到像SetupDiGetClassDevsWMI这些更底层的东西。

至于自动弹出 U 盘?虽然技术上你可以用DeviceIoControlIOCTL_STORAGE_EJECT_MEDIA搞定,但不建议悄悄搞,没保存文件可就麻烦了。

整体来说,VBWindows 消息还是挺方便的,做些系统工具、设备监控工具是完全够用的。如果你手上有 VB 老项目,又正好有这方面需求,可以顺手集成一下,还蛮方便的。

rar 文件大小:15.65KB