当前位置: 首页 > news >正文

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.lryc.cn/news/150349.html

相关文章:

  • Prometheus监控(三)架构
  • linux kvm网桥br简单理解和持久化配置
  • 【LeetCode-中等题】105. 从前序与中序遍历序列构造二叉树
  • uniapp 配置网络请求并使用请求轮播图
  • c#在MVC Api(.net framework)当中使用Swagger,以及Demo下载
  • Linux 常见命令操作
  • 前端实习第七周周记
  • DevOps理念:开发与运维的融合
  • windows下Mysql安装配置教程
  • [开发|java] activeJdbc的model的isModified方法说明
  • 23062day6
  • MiniExcel
  • 全球公链进展| Shibarium重新开放跨链桥提款;USDC计划在Polygon PoS等 6 个新区块链上推出
  • 关于C# halcon内存泄漏的研究
  • 高精度地图定位在高速公路自动驾驶系统中的应用
  • 【Apollo学习笔记】——规划模块TASK之SPEED_HEURISTIC_OPTIMIZER
  • R语言APRIORI关联规则、K-MEANS均值聚类分析中药专利复方治疗用药规律网络可视化...
  • 3. MySql 5.7安装方式
  • Flink 如何定位反压节点?
  • LeetCode-1005-K次取反后最大化的数组和-贪心算法
  • Linux内核源码分析 (5)多处理器调度
  • 华为云云服务器评测|华为云云耀云服务器L实例使用教学
  • 这个在线网站让你三分钟制作出一份精美简历
  • Sql 函数传递参数 字符串拼接
  • java八股文面试[多线程]——两个线程交替打印1-100之间的数字
  • gRPC之gRPC认证
  • 简易虚拟培训系统-UI控件的应用3
  • 语言模型(language model)
  • 【3.Vue子组件调用父组件方法】
  • 算法系列-876-求链表的中间节点