我知道你可以通过一个WMI事件或者覆盖WndProc来查找正确的消息,但是我想知道net框架中是否隐藏了一些东西,使得这项任务变得更容易。
发布于 2009-05-28 11:09:10
这个免费的DriveDetector类提供了这个功能(至少对于U盘是这样的,这就是我使用它的目的)。它使用您所描述的WndProc方法。
我不知道标准.NET库中有类似的东西。
发布于 2010-04-15 22:39:30
在以下代码中,当检测到新驱动器时,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 Functionhttps://stackoverflow.com/questions/920285
复制相似问题