无法检测到USB

时间:2014-04-22 16:29:16

标签: vb.net

我正在开发一个应该检测连接到计算机的USB设备的应用程序。我在网上搜索后得到以下代码:

Public Class Form1

Private Const WM_DEVICECHANGE As Integer = &H219
Private Const DBT_DEVICEARRIVAL As Integer = 32768

Protected Overrides Sub WndProc(ByRef m As System.Windows.Forms.Message)
    If m.Msg = WM_DEVICECHANGE Then
        If m.WParam = DBT_DEVICEARRIVAL Then
            MessageBox.Show("Removable Drive Detected")
        End If
    End If
    MyBase.WndProc(m)
End Sub
End Class

此代码适用于我。

但问题是如果首先连接USB设备并且之后启动应用程序,则无法检测到USB设备。

1 个答案:

答案 0 :(得分:0)

这很容易修复只需添加一个计时器双击它输入该代码然后返回到你的启动表单双击它然后键入

   Timer1.start

这将根据您的计时器比例

在几秒钟内检查
10000 = 10 seconds
60000 = 60 seconds
3600000 = 1 hour
7200000 = 2 hours
43200000 = half a day
86400000 = 1 day

但是,仍然存在一个问题,即消息框会一遍又一遍地显示,并且您将有多层消息框,因此请尝试将计时器中的代码更改为:

Public Class Form1
If label1.text = "0" then 
Private Const WM_DEVICECHANGE As Integer = &H219
Private Const DBT_DEVICEARRIVAL As Integer = 32768

Label1.text = "1"
Protected Overrides Sub WndProc(ByRef m As System.Windows.Forms.Message)
If m.Msg = WM_DEVICECHANGE Then
    If m.WParam = DBT_DEVICEARRIVAL Then
        msgbox("Removable Drive Detected", msgboxstyle.OkOnly
        if vbok then label1.text = "0"
    End If
End If
MyBase.WndProc(m)
End Sub
End Class

您需要添加一个标签,如果您不想看到它,只需点击它就可以转到属性(右侧)和

disable visible