驾驶信观察者

Mar*_*cel 2 .net c# vb.net

而不是FileSystemWachter类,我正在寻找类似的东西,当一个新的驱动器号弹出时.例如,当连接USB磁盘或插入SD卡等时,您将获得一个新的驱动器号.我想在我的应用程序中发生这样的事件.

你可以使用FileSystemWatcher类,还是有特定的东西?

任何例子或建议?

Anu*_*raj 6

试试这个:http://www.dotnetthoughts.net/2009/02/13/how-to-detect-usb-insertion-and-removal-in-vbnet/

Private WM_DEVICECHANGE As Integer = &H219

Public Enum WM_DEVICECHANGE_WPPARAMS As Integer
    DBT_CONFIGCHANGECANCELED = &H19
    DBT_CONFIGCHANGED = &H18
    DBT_CUSTOMEVENT = &H8006
    DBT_DEVICEARRIVAL = &H8000
    DBT_DEVICEQUERYREMOVE = &H8001
    DBT_DEVICEQUERYREMOVEFAILED = &H8002
    DBT_DEVICEREMOVECOMPLETE = &H8004
    DBT_DEVICEREMOVEPENDING = &H8003
    DBT_DEVICETYPESPECIFIC = &H8005
    DBT_DEVNODES_CHANGED = &H7
    DBT_QUERYCHANGECONFIG = &H17
    DBT_USERDEFINED = &HFFFF
End Enum

Protected Overrides Sub WndProc(ByRef m As System.Windows.Forms.Message)
    If m.Msg = WM_DEVICECHANGE Then
        Select Case m.WParam
            Case WM_DEVICECHANGE_WPPARAMS.DBT_DEVICEARRIVAL
                lblMessage.Text = "USB Inserted"
            Case WM_DEVICECHANGE_WPPARAMS.DBT_DEVICEREMOVECOMPLETE
                lblMessage.Text = "USB Removed"
        End Select
    End If
    MyBase.WndProc(m)
End Sub
Run Code Online (Sandbox Code Playgroud)