This C# code detects a CD-ROM being inserted into the CD-ROM drive of a PC. In order to interact with the CD-ROM, you need to use Windows Management Instrumentation (WMI). The .NET Framework provides two sets of classes for interaction with WMI. The
System.Management
Namespace provides access to management information and events about the system. The
System.Management.Instrumentation
Namespace provides classes to expose management information and events of an application to WMI.
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();
opt.EnablePrivileges = true;
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");
}
}
}
}
}
Note... In order to use the
System.Management
namespace in .NET 2, you will need to add a reference to the
System.Management.dll. This can be done in the IDE by right-clicking on the project in the solution explorer and choosing Add Reference... from the list. The DLL is on the first tab towards the end of the list of items.
I am Dinesh kumar Choudhary by Name, a software Designer and Developer by Work, a Indian Hindu by Religion, Co-Founder of DSFoundation located at http://dsfoundation.wordpress.com by profession, a Loving husband and a Caring Father by Relation.
I have a blog Website at http://dennosecqtinstien.wordpress.com. DSFoundation is the Autonomous body to serve for the management of Local shops located at New Delhi, India. Now a days DSFoundation and its subsidiaries are managed by Erls Corporation, an Another initiative by me and my colleagues, in which i am the another CO-Founder of the Organization. Erls Corporation can be located at http:erlsindia.co.in