diff --git a/Core/Servicers/Instances/Sleepdiscover.cs b/Core/Servicers/Instances/Sleepdiscover.cs index b3b9a08e8193e84e48d3d1cd75ae560a2870ac95..bb5692836cccfb773fac2c7bfb98b611fb057bf2 100644 --- a/Core/Servicers/Instances/Sleepdiscover.cs +++ b/Core/Servicers/Instances/Sleepdiscover.cs @@ -2,6 +2,7 @@ using Core.Event; using Core.Librarys; using Core.Servicers.Interfaces; +using Microsoft.Win32; using System; using System.Collections.Generic; using System.Diagnostics; @@ -32,6 +33,30 @@ namespace Core.Servicers.Instances { this.observer = observer; observer.OnAppActive += Observer_OnAppActive; + SystemEvents.PowerModeChanged += new PowerModeChangedEventHandler(OnPowerModeChanged); + } + + private void OnPowerModeChanged(object sender, PowerModeChangedEventArgs e) + { + switch (e.Mode) + { + case PowerModes.Suspend: + //电脑休眠 + if (status == SleepStatus.Wake) + { + status = SleepStatus.Sleep; + SleepStatusChanged?.Invoke(status); + } + break; + case PowerModes.Resume: + //电脑恢复 + if (status == SleepStatus.Sleep) + { + status = SleepStatus.Wake; + SleepStatusChanged?.Invoke(status); + } + break; + } } private void Observer_OnAppActive(string processName, string description, string file)