我正在开发一个应该检测连接到计算机的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设备。
答案 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