如何提高网站浏览量,平板网站开发环境,wordpress 重装教程视频教程,湛江网站建设制作价格笔记本充电状态有两种监测方式#xff0c;一种是主动查询#xff0c;另一种是注册充电状态变化事件
1#xff0c;先说主动监控吧#xff0c;建立一个线程#xff0c;反复查询SystemInformation.PowerStatus.PowerLineStatus private void readPower(){while (true){this.… 笔记本充电状态有两种监测方式一种是主动查询另一种是注册充电状态变化事件
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 namesender/param/// param nameeventArgs/paramprivate 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第一种唯一的不足就是需要新建一个线程比较消耗资源