Hi,
ich habe das Brennen von CD`s mittels der Win API realisiert.
Eingesetzt haben ich dazu folgendes XPBurn.
Klappt alles wunderbar ich habe nur ein Problem:
Ich muss vorher kontrollieren, ob eine leere CD im Laufwerk ist.
Ich suche also eine Möglichkeit mit der geprüft werden kann, ob eine CD eingelegt ist.
DriveInfo hab ich schon durchforstet.
Irgendwelche Ideen? (wmi oder ähnliches?)
Probiers mal damit (ungetestet):
class CCDDetect
{
ManagementEventWatcher managementEventWatcher = null;
WqlEventQuery eventQuery;
ManagementOperationObserver observer =
new ManagementOperationObserver();
ManagementScope scope = null;
// Bind to local machine
ConnectionOptions opt = new ConnectionOptions();
public CCDDetect()
{
opt.EnablePrivileges = true; //sets required privilege
scope = new ManagementScope("root\\CIMV2", opt);
try
{
eventQuery = new WqlEventQuery();
eventQuery.EventClassName = "__InstanceModificationEvent";
eventQuery.WithinInterval = new TimeSpan(0, 0, 1);
// DriveType - 5: CDROM
eventQuery.Condition = @"TargetInstance ISA 'Win32_LogicalDisk' and TargetInstance.DriveType = 5";
managementEventWatcher = new ManagementEventWatcher(scope, eventQuery);
// register async. event handler
managementEventWatcher.EventArrived += new EventArrivedEventHandler(CDREventArrived);
managementEventWatcher.Start();
// Do something usefull,block thread for testing
Console.ReadLine();
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}
finally
{
managementEventWatcher.Stop();
}
}
// Dump all properties
public void CDREventArrived(object sender, EventArrivedEventArgs e)
{
// Get the Event object and display it
PropertyData propertyData = e.NewEvent.Properties["TargetInstance"];
if (propertyData != null)
{
ManagementBaseObject mbo = propertyData.Value as ManagementBaseObject;
// if CD removed VolumeName == null
if (mbo.Properties["VolumeName"].Value != null)
{
Debug.WriteLine("CD has been inserted");
}
else
{
Debug.WriteLine("CD has been ejected");
}
}
}
Seit der Erkenntnis, dass der Mensch eine Nachricht ist, erweist sich seine körperliche Existenzform als überflüssig.