【发布时间】:2009-11-02 18:11:36
【问题描述】:
我正在进行一个项目,我需要能够检测 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 时它永远不会被击中。因为我根本没有弄乱这个,而且我在网上看到的所有示例都只是引用了相同的源代码(有细微的变化)
【问题讨论】: