您的位置:首页 > 编程语言 > C#

C#检测pc光驱里是否插入了光盘的方法

2015-07-22 09:33 1116 查看

本文实例讲述了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#程序设计有所帮助。

您可能感兴趣的文章:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  C# 检测 光驱