首页 > 编程 > C# > 正文

C#检测pc光驱里是否插入了光盘的方法

2020-01-24 01:36:14
字体:
来源:转载
供稿:网友

本文实例讲述了C#检测pc光驱里是否插入了光盘的方法。分享给大家供大家参考。具体如下:

C# 检测pc光驱里是否插入了光盘,需要添加System.Management.dll 的引用

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();   // Bind to local machine   ConnectionOptions opt = new ConnectionOptions();   opt.EnablePrivileges = true; //sets required privilege   ManagementScope scope = new ManagementScope( "root//CIMV2", opt );   try   {    q = new WqlEventQuery();    q.EventClassName = "__InstanceModificationEvent";    q.WithinInterval = new TimeSpan( 0, 0, 1 );    // DriveType - 5: CDROM    q.Condition = @"TargetInstance ISA 'Win32_LogicalDisk' and TargetInstance.DriveType = 5";    w = new ManagementEventWatcher( scope, q );    // register async. event handler    w.EventArrived += new EventArrivedEventHandler( we.CDREventArrived );    w.Start();    // Do something usefull,block thread for testing    Console.ReadLine();   }   catch( Exception e )   {    Console.WriteLine( e.Message );   }   finally   {    w.Stop();   }  }  // Dump all properties  public void CDREventArrived(object sender, EventArrivedEventArgs e)  {   // Get the Event object and display it   PropertyData pd = e.NewEvent.Properties["TargetInstance"];   if (pd != null)   {    ManagementBaseObject mbo = pd.Value as ManagementBaseObject;     // if CD removed VolumeName == null    if (mbo.Properties["VolumeName"].Value != null)    {     Console.WriteLine("CD has been inserted");    }    else    {     Console.WriteLine("CD has been ejected");    }   }  } }}

希望本文所述对大家的C#程序设计有所帮助。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表