C# WPF监听USB插入拨出

可以全部监听。好用

 

 private void FormF100WriteCortexLicense_Load(object sender, EventArgs e){this.Text =  this.Text + " " + FT_Tools.Program.version;USB USBWatcher = new USB();USBWatcher.AddUSBEventWatcher(USBEventHandler, USBEventHandler, new TimeSpan(0, 0, 1));}private void USBEventHandler(Object sender, EventArrivedEventArgs e){//暂未实现var watcher = sender as ManagementEventWatcher;watcher.Stop();//刷新设备信息if (e.NewEvent.ClassPath.ClassName == "__InstanceCreationEvent"){Log("Device Arrived");}else if (e.NewEvent.ClassPath.ClassName == "__InstanceDeletionEvent"){Log("Device Removed");}// 业务代码,逻辑耗时尽量不要太长,以免影响事件的监听watcher.Start();}

以下可以部分监听

public const int WM_DEVICECHANGE = 0x219;public const int DBT_DEVICEARRIVAL = 0x8000;public const int DBT_CONFIGCHANGECANCELED = 0x0019;public const int DBT_CONFIGCHANGED = 0x0018;public const int DBT_CUSTOMEVENT = 0x8006;public const int DBT_DEVICEQUERYREMOVE = 0x8001;public const int DBT_DEVICEQUERYREMOVEFAILED = 0x8002;public const int DBT_DEVICEREMOVECOMPLETE = 0x8004;public const int DBT_DEVICEREMOVEPENDING = 0x8003;public const int DBT_DEVICETYPESPECIFIC = 0x8005;public const int DBT_DEVNODES_CHANGED = 0x0007;public const int DBT_QUERYCHANGECONFIG = 0x0017;public const int DBT_USERDEFINED = 0xFFFF;protected override void WndProc(ref Message m){try{if (m.Msg == WM_DEVICECHANGE){switch (m.WParam.ToInt32()){case WM_DEVICECHANGE:break;case DBT_DEVICEARRIVAL:MessageBox.Show("判断检测USB插入电脑");DriveInfo[] s = DriveInfo.GetDrives();foreach (DriveInfo drive in s){if (drive.DriveType == DriveType.Removable){break;}}break;case DBT_CONFIGCHANGECANCELED:break;case DBT_CONFIGCHANGED:break;case DBT_CUSTOMEVENT:break;case DBT_DEVICEQUERYREMOVE:break;case DBT_DEVICEQUERYREMOVEFAILED:break;case DBT_DEVICEREMOVECOMPLETE:MessageBox.Show("判断检测USB拔出电脑");break;case DBT_DEVICEREMOVEPENDING:break;case DBT_DEVICETYPESPECIFIC:break;case DBT_DEVNODES_CHANGED:break;case DBT_QUERYCHANGECONFIG:break;case DBT_USERDEFINED:break;default:break;}}}catch (Exception ex){MessageBox.Show(ex.Message);}base.WndProc(ref m);}

以下不行 

     public class USBWatcher{private MyAPI.MyDel Log;private ManagementEventWatcher watcher;public USBWatcher(MyAPI.MyDel Log){this.Log= Log;}public void StartWatcher(){// 查询USB插入事件WqlEventQuery query = new WqlEventQuery("SELECT * FROM Win32_VolumeChangeEvent WHERE EventType = 2");// 创建事件监听器watcher = new ManagementEventWatcher(query);watcher.EventArrived += OnUSBInserted;// 开始监听watcher.Start();}public void StopWatcher(){// 停止监听if (watcher != null){watcher.Stop();watcher.Dispose();}}private void OnUSBInserted(object sender, EventArrivedEventArgs e){// 处理USB插入事件Log?.Invoke("USBInserted");}}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/93860.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【iOS】折叠cell

文章目录 前言一、实现效果二、折叠cell的实现原理三、实现折叠cell的高度变化四、实现选中点击的单元格总结 前言 在暑假的3GShare中用到了折叠cell控件,特此总结博客记录 一、实现效果 二、折叠cell的实现原理 首先我们需要知道ScrollView的是TableView的父类&a…

pytest---添加自定义命令行参数(pytest_addoption )

前言 在目前互联网公司中,都会存在多个测试环境,那么当我们编写的自动化想要在多套测试环境下进行运行时,如何使用?大多数人想到的可能是通过将我们自动化代码中的地址修改成不同环境,但是这时候就会增加一些工作量&am…

浅谈 Android Binder 监控方案

在 Android 应用开发中,Binder 可以说是使用最为普遍的 IPC 机制了。我们考虑监控 Binder 这一 IPC 机制,一般是出于以下两个目的: 卡顿优化:IPC 流程完整链路较长,且依赖于其他进程,耗时不可控&#xff0…

无涯教程-Android - Linear Layout函数

Android LinearLayout是一个视图组,该视图组将垂直或水平的所有子级对齐。 Linear Layout - 属性 以下是LinearLayout特有的重要属性- Sr.NoAttribute & 描述1 android:id 这是唯一标识布局的ID。 2 android:baselineAligned 此值必须是布尔值,为…

【8 排序】简单选择排序。

顺序表&#xff1a; void Swap(int &a,int &b){int temp;tempa;ab;btemp; } void SelectSort(int A[],int n){int min,i,j;for(i0;i<n-1;i){mini;for(ji1;j<n;j)if(A[j]<A[min])minj;if(min!i)Swap(A[i],A[min]);} } 单链表&#xff1a; void SelectSort…

实战:基于卷积的MNIST手写体分类

前面实现了基于多层感知机的MNIST手写体识别&#xff0c;本章将实现以卷积神经网络完成的MNIST手写体识别。 1. 数据的准备 在本例中&#xff0c;依旧使用MNIST数据集&#xff0c;对这个数据集的数据和标签介绍&#xff0c;前面的章节已详细说明过了&#xff0c;相对于前面章…

性能测试必备监控技能windows篇

前言 在手头没有专门的第三方监控时&#xff0c;该怎么监控服务指标呢&#xff1f;本篇就windows下监控进行分享&#xff0c;也是我们在进行性能测试时&#xff0c;必须掌握的。下面我们就windows下常用的三种监视工具进行说明&#xff1a; 任务管理器 资源监视器 性能监视器…

【python爬虫】4.爬虫实操(菜品爬取)

文章目录 前言项目&#xff1a;解密吴氏私厨分析过程代码实现&#xff08;一&#xff09;获取与解析提取最小父级标签一组菜名、URL、食材写循环&#xff0c;存列表 代码实现&#xff08;二&#xff09;复习总结 前言 上一关&#xff0c;我们学习了用BeautifulSoup库解析数据和…

数据结构(Java实现)-二叉树(下)

获取二叉树的高度 检测值为value的元素是否存在(前序遍历) 层序遍历 判断一棵树是不是完全二叉树 获取节点的路径 二叉树的最近公共祖先

【uniapp】 实现公共弹窗的封装以及调用

图例&#xff1a;红框区域为 “ 内容区域 ” 一、组件 <!-- 弹窗组件 --> <template> <view class"add_popup" v-if"person.isShowPopup"><view class"popup_cont" :style"{width:props.width&&props.width&…

基于微信小程序的汽车租赁系统的设计与实现ljx7y

汽车租赁系统&#xff0c;主要包括管理员、用户二个权限角色&#xff0c;对于用户角色不同&#xff0c;所使用的功能模块相应不同。本文从管理员、用户的功能要求出发&#xff0c;汽车租赁系统系统中的功能模块主要是实现管理员后端&#xff1b;首页、个人中心、汽车品牌管理、…

解决windows下安装python并终端运行python弹出windows商店的最终解决方案

最近在windows下安装了python&#xff0c;在终端中运行python命令的时候总是会弹出windows商店 为了解决这个问题&#xff0c;我修改系统的环境变量也一直不起作用&#xff0c;只有指定绝对路径时才能正常启动&#xff0c;这个问题困扰了我很长一段时间&#xff0c;后来了解到…