做彩票網站要什么接口互聯網推廣與營銷
?筆記本充電狀態(tài)有兩種監(jiān)測方式,一種是主動查詢,另一種是注冊充電狀態(tài)變化事件
1,先說主動監(jiān)控吧,建立一個線程,反復查詢SystemInformation.PowerStatus.PowerLineStatus
private void readPower(){while (true){this.Invoke(new Action(() =>{if (SystemInformation.PowerStatus.PowerLineStatus == PowerLineStatus.Offline){label1.Text = "斷電狀態(tài)!";SystemSounds.Beep.Play();}else if (SystemInformation.PowerStatus.PowerLineStatus == PowerLineStatus.Online)label1.Text = "插電狀態(tài)";else if (SystemInformation.PowerStatus.PowerLineStatus == PowerLineStatus.Unknown)label1.Text = "未知狀態(tài)";}));Thread.Sleep(1000);}}
?第二種,用事件來接受充電狀態(tài)變化
// 創(chuàng)建WMI事件查詢WqlEventQuery query = new WqlEventQuery("SELECT * FROM Win32_PowerManagementEvent");// 創(chuàng)建事件偵聽器watcher = new ManagementEventWatcher(query);watcher.EventArrived += Watcher_EventArrived;// 啟動事件監(jiān)聽watcher.Start();
// 創(chuàng)建事件偵聽器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("筆記本電源被拔出");// 在這里可以添加你想要執(zhí)行的操作}else if (eventType == 5){Console.WriteLine("筆記本電源已連接");// 在這里可以添加你想要執(zhí)行的操作}}}
總結,第一種效果比第二種好,可以知道充電變化的結果是有電,還是斷電,第二種只知道充電狀態(tài)變化,但具體是什么變化,無法得知,狀態(tài)值都是10,第一種唯一的不足,就是需要新建一個線程,比較消耗資源