码迷,mamicode.com
首页 > Windows程序 > 详细

C# 检测pc光驱里插入了光盘的代码

时间:2018-12-17 02:50:41      阅读:210      评论:0      收藏:0      [点我收藏+]

标签:adl   备份   wmi   interval   targe   value   eject   vol   main   

将开发过程经常用的一些代码段做个备份,如下代码段是关于C# 检测pc光驱里插入了光盘的代码,应该能对码农们也有好处。
using System;
using System.Management;

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");
    }
  }
}

}
}

C# 检测pc光驱里插入了光盘的代码

标签:adl   备份   wmi   interval   targe   value   eject   vol   main   

原文地址:http://blog.51cto.com/14122754/2331199

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!