Method for C to detect whether an optical disc is inserted in an pc optical drive

  • 2021-07-10 20:34:44
  • OfStack

This article describes the example of C # detection pc CD-ROM drive is inserted in the method. Share it for your reference. The details are as follows:

C # Detects whether a CD is inserted in the pc drive, and needs to add a reference to 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");
    }
   }
  }
 }
}

I hope this article is helpful to everyone's C # programming.


Related articles: