检测pc光驱里是否插入了光盘

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

public void OpenCDRomMonitor()
{
    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(this.CDREventArrived);
        w.Start();
        // Do something usefull,block thread for testing
        Console.ReadLine();
    }
    catch (Exception e)
    {
        Console.WriteLine(e.Message);
    }
    finally
    {
        w.Stop();
    }
}
private 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");
        }
    }
}

/// <summary>
/// 监控指定位置下是否存在指定类型的文件
/// </summary>
/// <param name="watchPath">监控目录</param>
/// <param name="watchFileType">监控文件类型*.jpg 要搜索的文件类型,例如 "*.txt" 表示所有文本文件</param>
private void OpenFileWatcher(string watchPath, string watchFileType)
{
    if (string.IsNullOrEmpty(watchPath))
    {
        watchPath = AppDomain.CurrentDomain.BaseDirectory;
    }
    List<string> files = GetFilesRecursively(watchPath,watchFileType);
    if (files.Count > 0)
    {//存在指定类型的文件
        MessageBox.Show("存在指定类型的文件");
    }
}

public static List<string> GetFilesRecursively(string folderPath, string searchPattern)
{
    List<string> files = new List<string>();
    files.AddRange(Directory.GetFiles(folderPath, searchPattern));

    string[] subDirs = Directory.GetDirectories(folderPath);
    foreach (string subDir in subDirs)
    {
        files.AddRange(GetFilesRecursively(subDir, searchPattern));
    }

    return files;
}
#endregion

  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值