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

用winform开发一个笔记本电脑是否在充电的小工具

 笔记本充电状态有两种监测方式,一种是主动查询,另一种是注册充电状态变化事件

1,先说主动监控吧,建立一个线程,反复查询SystemInformation.PowerStatus.PowerLineStatus

 private void readPower(){while (true){this.Invoke(new Action(() =>{if (SystemInformation.PowerStatus.PowerLineStatus == PowerLineStatus.Offline){label1.Text = "断电状态!";SystemSounds.Beep.Play();}else if (SystemInformation.PowerStatus.PowerLineStatus == PowerLineStatus.Online)label1.Text = "插电状态";else if (SystemInformation.PowerStatus.PowerLineStatus == PowerLineStatus.Unknown)label1.Text = "未知状态";}));Thread.Sleep(1000);}}

 第二种,用事件来接受充电状态变化

// 创建WMI事件查询WqlEventQuery query = new WqlEventQuery("SELECT * FROM Win32_PowerManagementEvent");// 创建事件侦听器watcher = new ManagementEventWatcher(query);watcher.EventArrived += Watcher_EventArrived;// 启动事件监听watcher.Start();

  // 创建事件侦听器ManagementEventWatcher watcher = null; 
/// <summary>/// 只能知道是笔记本电源事件,无法知道是插电还是断电/// </summary>/// <param name="sender"></param>/// <param name="eventArgs"></param>private void Watcher_EventArrived(object sender, EventArrivedEventArgs eventArgs){  // 设置事件处理程序PropertyData eventData = eventArgs.NewEvent.Properties["EventType"];if (eventData != null){int eventType = Convert.ToInt32(eventData.Value);this.Invoke(new Action(() =>{label1.Text = eventType.ToString();}));if (eventType == 4){Console.WriteLine("笔记本电源被拔出");// 在这里可以添加你想要执行的操作}else if (eventType == 5){Console.WriteLine("笔记本电源已连接");// 在这里可以添加你想要执行的操作}}}

总结,第一种效果比第二种好,可以知道充电变化的结果是有电,还是断电,第二种只知道充电状态变化,但具体是什么变化,无法得知,状态值都是10,第一种唯一的不足,就是需要新建一个线程,比较消耗资源

http://www.lryc.cn/news/371203.html

相关文章:

  • 构建汛期智慧水利新生态:EasyCVR视频汇聚监控综合管理方案解析
  • linux中HADOOP_HOME和JAVA_HOME删除后依然指向旧目录
  • C++中的结构体——结构体案例1_2
  • python接入汇率换算工具提高网站/小程序日活度
  • Ubuntu 网络重置
  • 防护DDoS攻击出现的常见误区
  • 入门 Axure RP 9 | 原型设计基础教程
  • 一线大厂都在高薪抢AI产品经理?
  • html实现粘贴excel数据,在页面表格中复制
  • WPF视频学习-简单应用篇图书馆程序(一)
  • Java+前端+Vue 后端Spring boot 开发的全套UWB定位方案,0.1米高精度定位系统源码
  • Mysql查询分析工具Explain的使用
  • OpenCV中的圆形标靶检测——findCirclesGrid()(一)
  • 2025广州眼博会,2025广东省眼睛健康及眼科产业展览会
  • Vue3 自定义渲染器 API createRenderer()(七)
  • 二分+ST表+递推,Cf 1237D - Balanced Playlist
  • 被裁员不可怕,可怕的是你只会写代码!
  • 服务器之间的时间如何保证一致
  • 算法体系-20 第二十节暴力递归到动态规划
  • 字符集相关变量理解
  • 618哪些数码产品比较好?2024超高人气产品推荐!
  • 基础-01-计算机网络概论
  • STM32学习笔记(一)--时钟树详解
  • JAVA小知识16:JAVA常用的API
  • PaddleDetection快速体验quick_start
  • 《Foundation CSS 参考手册》
  • 方法递归-结合案例阶乘问题、求和问题和猴子吃桃问题
  • 有一个主域名跟多个二级子域名时该怎么申请SSL证书?
  • LabVIEW伺服电机可应用在哪些领域
  • nvidia 显卡 没有正确安装或配置 OpenGL 库