这篇文章主要介绍了C#检测pc光驱里是否插入了光盘的方法,涉及C#针对光驱等硬件检测操作的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
本文实例讲述了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#程序设计有所帮助。
新闻热点
疑难解答