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

 更新时间:2015年07月22日 09:33:00   作者:秋风秋雨  
这篇文章主要介绍了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#程序设计有所帮助。

相关文章

  • 使用NOPI读取Word、Excel文档内容

    使用NOPI读取Word、Excel文档内容

    这篇文章主要为大家详细介绍了使用NOPI读取Word、Excel文档内容的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-03-03
  • C#调用OpenXml读取excel行数据

    C#调用OpenXml读取excel行数据

    这篇文章主要为大家详细介绍了C#如何调用OpenXml实现读取excel行数据,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2024-12-12
  • 解析数字签名的substring结构(获取数字签名时间)

    解析数字签名的substring结构(获取数字签名时间)

    解析数字签名的substring结构,大家参考使用吧
    2013-12-12
  • C#交错数组用法实例

    C#交错数组用法实例

    这篇文章主要介绍了C#交错数组用法,较为详细的分析了交错数组的概念、用法并实例分析了交错数组的使用技巧,需要的朋友可以参考下
    2015-04-04
  • C#基础概念二十五问 21-25

    C#基础概念二十五问 21-25

    C#基础概念二十五问 21-25...
    2007-04-04
  • Unity游戏开发中的桥接模式

    Unity游戏开发中的桥接模式

    桥接模式是Unity游戏开发中常用的设计模式之一,用于将抽象部分与实现部分分离,从而使它们可以独立地变化。通过桥接模式,不同的抽象类可以与不同的实现类组合使用,从而实现更加灵活和可扩展的系统设计。常见的应用包括游戏中的场景渲染、UI界面设计、音效播放等
    2023-05-05
  • C#将html table 导出成excel实例

    C#将html table 导出成excel实例

    C#将html table 导出成excel实例,需要的朋友可以参考一下
    2013-04-04
  • C# Unicode编码解码的实现

    C# Unicode编码解码的实现

    本文主要介绍了C# Unicode编码解码的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-06-06
  • C#实现PDF文件添加图片背景

    C#实现PDF文件添加图片背景

    这篇文章主要介绍了C#实现PDF文件添加图片背景的相关资料,需要的朋友可以参考下
    2016-02-02
  • C#中的委托数据类型简介

    C#中的委托数据类型简介

    委托是一个类型安全的对象,它指向程序中另一个以后会被调用的方法(或多个方法)。通过本文给大家介绍C#中的委托数据类型简介,对c委托类型相关知识感兴趣的朋友一起学习吧
    2016-03-03

最新评论