1. 程式人生 > 其它 >C#監測系統事件,睡眠狀態

C#監測系統事件,睡眠狀態

在.net中有提供一個SystemEvents的靜態類,該類有多個事件可以監測到系統事件的變化

微軟官方文件

https://docs.microsoft.com/zh-cn/dotnet/api/microsoft.win32.systemevents?view=netframework-4.5.2&f1url=%3FappId%3DDev16IDEF1%26l%3DZH-CN%26k%3Dk(Microsoft.Win32.SystemEvents);k(TargetFrameworkMoniker-.NETFramework,Version%253Dv4.5.2);k(DevLang-csharp)%26rd%3Dtrue

但是PowerModeChanged卻始終不能監測到系統睡眠狀態,也不知道怎麼回事,所以我決定另闢悉徑

使用監測系統事件的方式

 //獲取系統事件物件
            var log = new EventLog("System");//EventLog.GetEventLogs()[9];
            //繫結系統事件通知
            log.EntryWritten += Form1_EntryWritten;
            //接收通知
            log.EnableRaisingEvents = true;

  

  private void Form1_EntryWritten(object sender, EntryWrittenEventArgs e)
        {
            this.Invoke(new Action(() =>
            {
                //102 睡眠恢復 158系統退出待機狀態
                this.listBox1.Items.Add($"{e.Entry.Source} - {e.Entry.CategoryNumber}");
            }));
        }

  這個主要是監控系統日誌來實現的,算是另一種監測的方法

如下圖