标签:adl 备份 wmi interval targe value eject vol main
将开发过程经常用的一些代码段做个备份,如下代码段是关于C# 检测pc光驱里插入了光盘的代码,应该能对码农们也有好处。namespace CDROMManagement
{
class WMIEvent
{
static void Main(string[] args)
{
WMIEvent we = new WMIEvent();
ManagementEventWatcher w = null;
WqlEventQuery q;
ManagementOperationObserver observer = new
ManagementOperationObserver();
  ConnectionOptions opt = new ConnectionOptions();
  ManagementScope scope = new ManagementScope( "root\CIMV2", opt );
  try
  {
    q = new WqlEventQuery();
    q.EventClassName = "__InstanceModificationEvent";
    q.WithinInterval = new TimeSpan( 0, 0, 1 );
    q.Condition = @"TargetInstance ISA ‘Win32_LogicalDisk‘ and
        TargetInstance.DriveType = 5";
    w = new ManagementEventWatcher( scope, q );
    w.EventArrived += new EventArrivedEventHandler( we.CDREventArrived );
    w.Start();
    Console.ReadLine();
  }
  catch( Exception e )
  {
    Console.WriteLine( e.Message );
  }
  finally
  {
    w.Stop();
  }
}
public void CDREventArrived(object sender, EventArrivedEventArgs e)
{
  PropertyData pd = e.NewEvent.Properties["TargetInstance"];
  if (pd != null)
  {
    ManagementBaseObject mbo = pd.Value as ManagementBaseObject;
    if (mbo.Properties["VolumeName"].Value != null)
    {
      Console.WriteLine("CD has been inserted");
    }
    else
    {
      Console.WriteLine("CD has been ejected");
    }
  }
}
}
}
标签:adl 备份 wmi interval targe value eject vol main
原文地址:http://blog.51cto.com/14122754/2331199