首页 > 编程 > C# > 正文

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

2019-10-29 21:40:21
字体:
来源:转载
供稿:网友

这篇文章主要介绍了C#检测pc光驱里是否插入了光盘的方法,涉及C#针对光驱等硬件检测操作的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下

本文实例讲述了C#检测pc光驱里是否插入了光盘的方法。分享给大家供大家参考。具体如下:

C# 检测pc光驱里是否插入了光盘,需要添加System.Management.dll 的引用

 

 
  1. using System; 
  2. using System.Management; 
  3. namespace CDROMManagement 
  4. class WMIEvent 
  5. static void Main(string[] args) 
  6. WMIEvent we = new WMIEvent(); 
  7. ManagementEventWatcher w = null
  8. WqlEventQuery q; 
  9. ManagementOperationObserver observer = new ManagementOperationObserver(); 
  10. // Bind to local machine 
  11. ConnectionOptions opt = new ConnectionOptions(); 
  12. opt.EnablePrivileges = true//sets required privilege 
  13. ManagementScope scope = new ManagementScope( "root//CIMV2", opt ); 
  14. try 
  15. q = new WqlEventQuery(); 
  16. q.EventClassName = "__InstanceModificationEvent"
  17. q.WithinInterval = new TimeSpan( 0, 0, 1 ); 
  18. // DriveType - 5: CDROM 
  19. q.Condition = @"TargetInstance ISA 'Win32_LogicalDisk' and TargetInstance.DriveType = 5"
  20. w = new ManagementEventWatcher( scope, q ); 
  21. // register async. event handler 
  22. w.EventArrived += new EventArrivedEventHandler( we.CDREventArrived ); 
  23. w.Start(); 
  24. // Do something usefull,block thread for testing 
  25. Console.ReadLine(); 
  26. catch( Exception e ) 
  27. Console.WriteLine( e.Message ); 
  28. finally 
  29. w.Stop(); 
  30. // Dump all properties 
  31. public void CDREventArrived(object sender, EventArrivedEventArgs e) 
  32. // Get the Event object and display it 
  33. PropertyData pd = e.NewEvent.Properties["TargetInstance"]; 
  34. if (pd != null
  35. ManagementBaseObject mbo = pd.Value as ManagementBaseObject; 
  36.  
  37. // if CD removed VolumeName == null 
  38. if (mbo.Properties["VolumeName"].Value != null
  39. Console.WriteLine("CD has been inserted"); 
  40. else 
  41. Console.WriteLine("CD has been ejected"); 

希望本文所述对大家的C#程序设计有所帮助。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表