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

前端技术 2023/08/31 C#

本文实例讲述了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#程序设计有所帮助。

本文地址:https://www.stayed.cn/item/1105

转载请注明出处。

本站部分内容来源于网络,如侵犯到您的权益,请 联系我

我的博客

人生若只如初见,何事秋风悲画扇。