我知道你可以使用WMI事件或覆盖WndProc并寻找正确的消息,但我想知道网络框架中是否没有隐藏的东西可以使这个任务更容易。
答案 0 :(得分:1)
这个免费的DriveDetector类提供了这项功能(至少对于USB驱动器来说,这是我用过的)。它使用您描述的WndProc方法。
我不知道标准.NET库中的任何类似内容。
答案 1 :(得分:0)
在以下代码中,当检测到新驱动器时,moDiskDetector将引发EventArrived事件。
要检测驱动器的删除,请使用“__InstanceDeletionEvent”。
Private WithEvents moDiskAddWatcher As ManagementEventWatcher
Private Sub StartWatcher()
If moDiskAddWatcher Is Nothing Then
moDiskAddWatcher = CreateWatcher("__InstanceCreationEvent", "(TargetInstance ISA 'Win32_DiskDrive')")
End If
moDiskAddWatcher.Start()
End Sub
Private Sub StopWatcher()
If moDiskAddWatcher IsNot Nothing Then
moDiskAddWatcher.Stop()
moDiskAddWatcher.Dispose()
End If
End Sub
Private Function CreateWatcher(ByVal sClassName As String, ByVal sCondition As String) As ManagementEventWatcher
Dim oQuery As New WqlEventQuery()
oQuery.EventClassName = sClassName
oQuery.WithinInterval = New TimeSpan(0, 0, 5)
oQuery.Condition = sCondition
Return New ManagementEventWatcher(oQuery)
End Function