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");}}
相关文章:
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 TimeSpa…...
Prometheus监控(三)架构
文章目录 Prometheus架构图Prometheus生态圈组件Prometheus Serverclient librariesPushgatewayexporterAlartmanager Prometheus架构理解存储计算层采集层应用层 Prometheus架构图 Prometheus生态圈组件 Prometheus Server 主服务器,负责收集和存储时间序列数据 …...
linux kvm网桥br简单理解和持久化配置
linux网桥简单理解和持久化配置 文章目录 前言一、Linux 网桥是什么?二、网桥主要作用三、网桥配置命令及安装(CentOS系统) 1 网桥配置命令2.持久化网桥配置 前言 linux bridge是网络虚拟化中非常重要的一种设备,今天就来学习下linux bridge的相关知…...
【LeetCode-中等题】105. 从前序与中序遍历序列构造二叉树
文章目录 题目方法一:递归 题目 方法一:递归 preorder [3,9,20,15,7] inorder [9,3,15,20,7] 首先根据 preorder 找到根节点是 3然后根据根节点将 inorder 分成左子树和右子树 左子树 inorder [9]右子树 inorder [15,20,7]这时候3是根节点 3的左子树…...
uniapp 配置网络请求并使用请求轮播图
由于平台的限制,小程序项目中不支持 axios,而且原生的 wx.request() API 功能较为简单,不支持拦截器等全局定制的功能。因此,建议在 uni-app 项目中使用 escook/request-miniprogram 第三方包发起网络数据请求。 官方文档…...
c#在MVC Api(.net framework)当中使用Swagger,以及Demo下载
主要的步骤就是创建项目,通过nuget 添加Swashbuckle包,然后在SwaggerConfig当中进行相关的配置。 具体的步骤,可以参考下面的链接: https://www.cnblogs.com/94pm/p/8046580.htmlhttps://blog.csdn.net/xiaouncle/article/detail…...
Linux 常见命令操作
一、目录管理 1.1 列出目录 ls # ls 命令 # -a 参数,查看全部的文件,包括隐藏的文件 # -l 参数,列出所有的文件,包括文件的属性和权限,不显示隐藏文件 [rootlocalhost /]# ls bin boot dev etc home lib lib64…...
前端实习第七周周记
前言 第六周没写,是因为第六周的前两天在处理第五周的样本库部分。问题解决一个是嵌套问题(因为我用到了递归),还有一个问题在于本机没有问题,打包上线接口404。这个问题我会在这周的总结中说。 第六周第三天才谈好新…...
DevOps理念:开发与运维的融合
在现代软件开发领域,DevOps 不仅仅是一个流行的词汇,更是一种文化、一种哲学和一种方法论。DevOps 的核心理念是通过开发和运维之间的紧密合作,实现快速交付、高质量和持续创新。本文将深入探讨 DevOps 文化的重要性、原则以及如何在团队中实…...
windows下Mysql安装配置教程
Mysql下载 在官网下载mysql community Server https://dev.mysql.com/downloads/mysql/ 可以选择下载压缩包或者MSI安装程序 使用压缩包安装 MySQL 压缩包安装通常需要以下步骤: 1. 下载 MySQL 安装包 你可以从 MySQL 官网上下载适合你系统的 MySQL 安装包&am…...
[开发|java] activeJdbc的model的isModified方法说明
在 ActiveJDBC 中,每个数据库表都对应一个继承自 org.javalite.activejdbc.Model 的类,该类用于表示数据库表中的记录。这些类允许您以面向对象的方式与数据库交互。 import org.javalite.activejdbc.Model;public class User extends Model {static {v…...
23062day6
作业:将dict.txt导入到数据库中。 方法1:创建shell脚本, 调用指令创建数据库和表格,使用循环在循环中用数组存储dict.txt的内容并插入表格中。 方法2:在终端创建数据库和表格,将dict.txt中的内容手动输入…...
MiniExcel
MiniExcel 是一个在 .NET 平台上用于操作 Excel 文件的库。它的特点是轻量级、简单易用,并且支持读取和写入 Excel 文件的功能。 使用 MiniExcel 可以进行以下操作: 读取 Excel 文件的数据,并将其转换为多维数组或实体对象。将多维数组或实…...
全球公链进展| Shibarium重新开放跨链桥提款;USDC计划在Polygon PoS等 6 个新区块链上推出
一周速览 过去一周,明星项目动态如下: Holesky 公共测试网创世文件已生成 Shibarium主网重新开放跨链桥提款 BNB Greenfield 测试网将于 8 月 31 日重置 BNB Smart Chain(BEP20)将进行网络升级及硬分叉 USDC 将在6个新区块链…...
关于C# halcon内存泄漏的研究
开发环境:Win7 VS2002 halcon12, 直接运行Debug的exe 不释放 private void butTemp_Click(object sender, EventArgs e) { HOperatorSet.SetSystem("clip_region", "false"); HObject region; …...
高精度地图定位在高速公路自动驾驶系统中的应用
近年来随着汽车保有量不断增加,随之而来的是: ( 1) 严重的交通拥堵,通行效率低下,用在通行上的时间不断增加; ( 2) 交通事故频发,交通事故导致的伤亡人数和费用不断增加,而且绝大多数事故是由人为因素导致的; ( 3) 大气…...
【Apollo学习笔记】——规划模块TASK之SPEED_HEURISTIC_OPTIMIZER
文章目录 前言SPEED_BOUNDS_PRIORI_DECIDER功能简介SPEED_BOUNDS_PRIORI_DECIDER相关配置SPEED_BOUNDS_PRIORI_DECIDER流程1. 对路程和时间进行采样以及速度限制2. 设计状态转移方程(cost计算)2.0 CalculateCostAt代价计算2.1 GetObstacleCost障碍物cost…...
R语言APRIORI关联规则、K-MEANS均值聚类分析中药专利复方治疗用药规律网络可视化...
全文链接:http://tecdat.cn/?p30605 应用关联规则、聚类方法等数据挖掘技术分析治疗的中药专利复方组方配伍规律(点击文末“阅读原文”获取完整代码数据)。 方法检索治疗中药专利复方,排除外用中药及中西药物合用的复方。最近我们…...
3. MySql 5.7安装方式
服务器ip数据库版本硬件要求10.1.1.31mysql-boost-5.7.31.tar.gz2G/40G,内存不够需要开swap空间10.1.1.32mysql-boost-5.7.31.tar.gz2G/40G关闭swap swapoff -a && sed -i ‘/ swap / s/^(.*)$/#\1/g’ /etc/fstab 安装依赖 yum -y install make cmake gcc gcc-c++ bis…...
Flink 如何定位反压节点?
分析&回答 Flink Web UI 自带的反压监控 —— 直接方式 Flink Web UI 的反压监控提供了 Subtask 级别的反压监控。监控的原理是通过Thread.getStackTrace() 采集在 TaskManager 上正在运行的所有线程,收集在缓冲区请求中阻塞的线程数(意味着下游阻…...
MFC内存泄露
1、泄露代码示例 void X::SetApplicationBtn() {CMFCRibbonApplicationButton* pBtn GetApplicationButton();// 获取 Ribbon Bar 指针// 创建自定义按钮CCustomRibbonAppButton* pCustomButton new CCustomRibbonAppButton();pCustomButton->SetImage(IDB_BITMAP_Jdp26)…...
React Native在HarmonyOS 5.0阅读类应用开发中的实践
一、技术选型背景 随着HarmonyOS 5.0对Web兼容层的增强,React Native作为跨平台框架可通过重新编译ArkTS组件实现85%以上的代码复用率。阅读类应用具有UI复杂度低、数据流清晰的特点。 二、核心实现方案 1. 环境配置 (1)使用React Native…...
均衡后的SNRSINR
本文主要摘自参考文献中的前两篇,相关文献中经常会出现MIMO检测后的SINR不过一直没有找到相关数学推到过程,其中文献[1]中给出了相关原理在此仅做记录。 1. 系统模型 复信道模型 n t n_t nt 根发送天线, n r n_r nr 根接收天线的 MIMO 系…...
Python ROS2【机器人中间件框架】 简介
销量过万TEEIS德国护膝夏天用薄款 优惠券冠生园 百花蜂蜜428g 挤压瓶纯蜂蜜巨奇严选 鞋子除臭剂360ml 多芬身体磨砂膏280g健70%-75%酒精消毒棉片湿巾1418cm 80片/袋3袋大包清洁食品用消毒 优惠券AIMORNY52朵红玫瑰永生香皂花同城配送非鲜花七夕情人节生日礼物送女友 热卖妙洁棉…...
安宝特方案丨船舶智造的“AR+AI+作业标准化管理解决方案”(装配)
船舶制造装配管理现状:装配工作依赖人工经验,装配工人凭借长期实践积累的操作技巧完成零部件组装。企业通常制定了装配作业指导书,但在实际执行中,工人对指导书的理解和遵循程度参差不齐。 船舶装配过程中的挑战与需求 挑战 (1…...
保姆级教程:在无网络无显卡的Windows电脑的vscode本地部署deepseek
文章目录 1 前言2 部署流程2.1 准备工作2.2 Ollama2.2.1 使用有网络的电脑下载Ollama2.2.2 安装Ollama(有网络的电脑)2.2.3 安装Ollama(无网络的电脑)2.2.4 安装验证2.2.5 修改大模型安装位置2.2.6 下载Deepseek模型 2.3 将deepse…...
【p2p、分布式,区块链笔记 MESH】Bluetooth蓝牙通信 BLE Mesh协议的拓扑结构 定向转发机制
目录 节点的功能承载层(GATT/Adv)局限性: 拓扑关系定向转发机制定向转发意义 CG 节点的功能 节点的功能由节点支持的特性和功能决定。所有节点都能够发送和接收网格消息。节点还可以选择支持一个或多个附加功能,如 Configuration …...
消息队列系统设计与实践全解析
文章目录 🚀 消息队列系统设计与实践全解析🔍 一、消息队列选型1.1 业务场景匹配矩阵1.2 吞吐量/延迟/可靠性权衡💡 权衡决策框架 1.3 运维复杂度评估🔧 运维成本降低策略 🏗️ 二、典型架构设计2.1 分布式事务最终一致…...
Python学习(8) ----- Python的类与对象
Python 中的类(Class)与对象(Object)是面向对象编程(OOP)的核心。我们可以通过“类是模板,对象是实例”来理解它们的关系。 🧱 一句话理解: 类就像“图纸”,对…...
Windows 下端口占用排查与释放全攻略
Windows 下端口占用排查与释放全攻略 在开发和运维过程中,经常会遇到端口被占用的问题(如 8080、3306 等常用端口)。本文将详细介绍如何通过命令行和图形化界面快速定位并释放被占用的端口,帮助你高效解决此类问题。 一、准…...
