Here's how you can do it using System.Management classes (and WMI).
// This code demonstrates how to monitor the CDROM device loading
using System;
using System.ComponentModel;
using System.Runtime.InteropServices;
using System.Management;
class WMIEvent {
public static void Main() {
WMIEvent we = new WMIEvent();
ManagementEventWatcher w= null;
WqlEventQuery q;
ManagementOperationObserver observer = new ManagementOperationObserver();
// Bind to local machine
ManagementScope scope = new ManagementScope("root\\CIMV2");
scope.Options.EnablePrivileges = true; //sets required privilege
try {
q = new WqlEventQuery();
q.EventClassName = "__InstanceModificationEvent";
q.WithinInterval = new TimeSpan(0,0,15);
// DriveType - 5: CDROM
q.Condition = @"TargetInstance ISA 'Win32_LogicalDisk' and
TargetInstance.DriveType = 5";
Console.WriteLine(q.QueryString);
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;
if(( pd = e.NewEvent.Properties["TargetInstance"]) != null)
{
ManagementBaseObject mbo = pd.Value as ManagementBaseObject;
// if CD removed VolumeName == null
if(mbo.Properties["VolumeName"].Value != null)
Console.WriteLine(mbo.Properties["VolumeName"].Value);
}
}
}
Willy.
"Daniel O'Connell" <onyxkirx@--NOSPAM--comcast.net> wrote in message
news:eq**************@TK2MSFTNGP10.phx.gbl...
Intersting problem, not sure about how to determine when a disc is
inserted, but I am working on a lower level piece of code(which will be written in
MC++) that will query cdrom media properties(writeability, etc) which
should be done in a day or so. If no one posts an answer I can post the resultant
code when its complete.
"Tony" <La*********@homeandresting.com> wrote in message
news:Ot**************@TK2MSFTNGP11.phx.gbl... I cant help on this, but am looking for similar information......
I am trying to do something similar, but would also like to know if the
cd drive is writeable and has writeable media loaded.
The same goes for a floppy drive - seeing if a disk is loaded and the
disk is not write protected
Tony
"Hayato Iriumi" <hi*****@hotmail.com> wrote in message
news:e1***************@TK2MSFTNGP11.phx.gbl... Hello,
I'm trying to find a way to detect whether CD-ROM was inserted into
the CD-ROM drive using C#. Does anyone have any idea how to do this? WMI?
Win32 API?
TIA