首页 > 编程语言 >C# 监听usb插拔

C# 监听usb插拔

时间:2024-03-01 14:01:56浏览次数:16  
标签:插拔 usb C# private insertWatcher static deviceId removeWatcher string

private static ManagementEventWatcher insertWatcher;
private static ManagementEventWatcher removeWatcher;
static void Main(string[] args)
{
insertWatcher = new ManagementEventWatcher();
WqlEventQuery insertQuery = new WqlEventQuery("SELECT * FROM __InstanceCreationEvent WITHIN 1 WHERE TargetInstance ISA 'Win32_USBControllerDevice'");
insertWatcher.EventArrived += USBDeviceInserted;
insertWatcher.Query = insertQuery;
insertWatcher.Start();

removeWatcher = new ManagementEventWatcher();
WqlEventQuery removeQuery = new WqlEventQuery("SELECT * FROM __InstanceDeletionEvent WITHIN 1 WHERE TargetInstance ISA 'Win32_USBControllerDevice'");
removeWatcher.EventArrived += USBDeviceRemoved;
removeWatcher.Query = removeQuery;
removeWatcher.Start();

Console.ReadKey();

StopMonitoring();
Console.WriteLine("OK");
Console.ReadKey();
}
   private static void USBDeviceInserted(object sender, EventArrivedEventArgs e)
        {
            ManagementBaseObject targetInstance = (ManagementBaseObject)e.NewEvent["TargetInstance"];
            string deviceId = targetInstance["Dependent"] as string;

            if (deviceId.Contains("VID_04B4") && deviceId.Contains("PID_1003"))
            {
                
            }
        }

        private static void USBDeviceRemoved(object sender, EventArrivedEventArgs e)
        {
            ManagementBaseObject targetInstance = (ManagementBaseObject)e.NewEvent["TargetInstance"];
            string deviceId = targetInstance["Dependent"] as string;

            if (deviceId.Contains("VID_04B4") && deviceId.Contains("PID_1003"))
            {
               
            }
        }
private static void StopMonitoring()
        {
            if (insertWatcher != null)
            {
                insertWatcher.Stop();
                insertWatcher.Dispose();
                insertWatcher = null;
            }

            if (removeWatcher != null)
            {
                removeWatcher.Stop();
                removeWatcher.Dispose();
                removeWatcher = null;
            }
        }

 

标签:插拔,usb,C#,private,insertWatcher,static,deviceId,removeWatcher,string
From: https://www.cnblogs.com/QJZY/p/18046890

相关文章

  • wpf中treeview和ICollectionView接口实现数据过滤
    privateICollectionView_collectionView;privatevoidbinddata(List<obj>list){//创建CollectionViewSource并绑定到TreeViewCollectionViewSourcecollectionViewSource=newCollectionViewSource{Source=li......
  • 为什么django3+版本不能用sql_server.pyodbc只能用mssql
    之前使用的是django2.2.2,后来换到django3.2后发现在settings中进行数据库链接sqlserver的时候sql_server.pyodbc用不了,随后切换到mssql才行,后来查阅后发现是版本问题导致 Django3.2本身不包含对SQLServer的直接支持。默认情况下,Django支持几种主流的数据库后端,例如SQLi......
  • 外观模式(facade pattern)
    外观模式(facadepattern) 外观模式(FacadePattern),也叫门面模式,外观模式的原始定义是:为子系统中的一组接口提供统一的接口。它定义了一个更高级别的接口,使子系统更易于使用。外观模式,是一种通过为多个复杂的子系统提供一个一致的接口,而使这些子系统更加容易被访问的模式。该模......
  • 什么是MTConnect?
    MTConnect是美国机械制造技术协会于2006年提出并主导的数控设备互联通讯协议。源自德玛吉早年的一个机床联网项目,后来成为开源标准。因为强调安全性,定义为单向通信协议(只读)。其特点是具有设备模型定义能力且提供机床设备标准参考模型。目前已获国际主流机床厂支持,并正申报ISO标准,......
  • 11.2.0.4 RAC中的ora.oc4j资源无法启动
    1、故障描述一套11.2.0.4RAC测试环境,无意间发现ora.oc4j资源无法启动。本文主要记录处理过程。 2、故障处理(1).手动启动oc4j资源:[root@11grac1log]#crsctlstartresourceora.oc4j该命令一直处于执行状态,没有任何输出(2).查看scriptagent_grid.log日志2024-03-011......
  • 英语背单词 专四词汇 2024年03月 ChatGPT
     2024-03-01indexwordpronunciationpartsofspeechexplanationtranslationinChinese1inert/ɪˈnəːt/adjectiveLackingtheabilitytomoveorreact;inactive.惰性的;不活跃的2anticipation/ænˌtɪsɪˈpeɪʃən/nounTheactoflookingfo......
  • 使用debezium实现cdc实时数据同步功能记录
    Debezium是一个用于变更数据捕获的开源分布式平台。能够保证应用程序就可以开始响应其他应用程序提交到您数据库的所有插入、更新和删除操作。Debezium持久、快速,因此即使出现问题,您的应用程序也能快速响应,绝不会错过任何事件。Debezium默认使用Kafka来投递数据,在事务日志中记......
  • 解决celery与django结合后,分别启动celery和django的进程同时调用定时任务的问题
     django中引入celery后发现在代码中写如下这样的定时任务,启动celery和django的工程后,他们都会调用这个定时任务导致,任务有的时候会冲突出现奇怪的问题。如何解决请继续看。scheduler=BackgroundScheduler()scheduler.add_job(testFunc,'interval',seconds=60)scheduler.......
  • LeetCode 2345. Finding the Number of Visible Mountains
    原题链接在这里:https://leetcode.com/problems/finding-the-number-of-visible-mountains/description/题目:Youaregivena 0-indexed 2Dintegerarray peaks where peaks[i]=[xi,yi] statesthatmountain i hasapeakatcoordinates (xi,yi).Amountaincan......
  • 基于CNN卷积网络的MNIST手写数字识别matlab仿真,CNN编程实现不使用matlab工具箱
    1.算法运行效果图预览    2.算法运行软件版本matlab2022a  3.算法理论概述       MNIST是一个手写数字的大型数据库,包含60,000个训练样本和10,000个测试样本。每个样本都是28x28像素的灰度图像,代表0到9之间的一个数字。 3.1卷积神经网络(CNN)   ......