我正在做一个项目,在这个项目中,我需要能够检测何时插入或移除CD或USB驱动器。我找到了一些源代码,本来应该可以做到这一点,但是,当我插入或弹出一张CD时,似乎什么都没有发生。
有人能验证一下来源是正确的吗?能给我一些关于我在这里可能做错了什么的线索吗?
public class MyWindow
{
ManagementEventWatcher w;
private void MyWindow_Loaded(object sender, RoutedEventArgs e)
{
WqlEventQuery query = new WqlEventQuery("__InstanceCreationEvent", new TimeSpan(0, 0, 1), @"TargetInstance ISA 'Win32_LogicalDisk' and TargetInstance.DriveType = 2");
ConnectionOptions opt = new ConnectionOptions();
opt.EnablePrivileges = true;
ManagementScope ms = new ManagementScope("root\\CIMV2", opt);
w = new ManagementEventWatcher(ms, query);
w.EventArrived += new EventArrivedEventHandler(w_EventArrived);
w.Start();
}
private void w_EventArrived(object sender, EventArrivedEventArgs e)
{
PropertyData pd = e.NewEvent.Properties["TargetInstance"];
}
}
当我在“propertydata pd=…”行上设置断点时,当我弹出/插入CD时,它永远不会被击中。因为我一点也没有搞砸,我在网上看到的所有例子都简单地引用了相同的源代码(有细微的变化)。