在.Net中有一个简单的事件来检测cd,dvd(或usb)插入吗?

时间:2009-05-28 10:59:31

标签: windows vb.net

我知道你可以使用WMI事件或覆盖WndProc并寻找正确的消息,但我想知道网络框架中是否没有隐藏的东西可以使这个任务更容易。

2 个答案:

答案 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