本文实例讲述了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
转载请注明出处。
本站部分内容来源于网络,如侵犯到您的权益,请 联系我