将开发过程经常用的一些代码段做个备份, 如下代码段是关于 C# 检测 pc 光驱里插入了光盘的代码, 应该能对码农们也有好处.
- 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();
- ConnectionOptions opt = new ConnectionOptions();
- ManagementScope scope = new ManagementScope( "root\CIMV2", opt );
- try
- {
- q = new WqlEventQuery();
- q.EventClassName = "__InstanceModificationEvent";
- q.WithinInterval = new TimeSpan( 0, 0, 1 );
- q.Condition = @"TargetInstance ISA'Win32_LogicalDisk' and
- TargetInstance.DriveType = 5";
- w = new ManagementEventWatcher( scope, q );
- w.EventArrived += new EventArrivedEventHandler( we.CDREventArrived );
- w.Start();
- Console.ReadLine();
- }
- catch( Exception e )
- {
- Console.WriteLine( e.Message );
- }
- finally
- {
- w.Stop();
- }
- }
- public void CDREventArrived(object sender, EventArrivedEventArgs e)
- {
- PropertyData pd = e.NewEvent.Properties["TargetInstance"];
- if (pd != null)
- {
- ManagementBaseObject mbo = pd.Value as ManagementBaseObject;
- if (mbo.Properties["VolumeName"].Value != null)
- {
- Console.WriteLine("CD has been inserted");
- }
- else
- {
- Console.WriteLine("CD has been ejected");
- }
- }
- }
- }
- }
来源: http://www.bubuko.com/infodetail-2887391.html