mirror of
https://github.com/Flow-Launcher/Flow.Launcher.git
synced 2026-03-11 08:54:32 +00:00
Use PInvoke to register SystemEvents
This commit is contained in:
parent
3cd7c3ce00
commit
74306f0a76
3 changed files with 17 additions and 14 deletions
|
|
@ -83,4 +83,7 @@ WM_GETTEXT
|
|||
OpenProcess
|
||||
QueryFullProcessImageName
|
||||
EVENT_OBJECT_HIDE
|
||||
EVENT_SYSTEM_DIALOGEND
|
||||
EVENT_SYSTEM_DIALOGEND
|
||||
|
||||
WM_POWERBROADCAST
|
||||
PBT_APMRESUMEAUTOMATIC
|
||||
|
|
@ -338,6 +338,9 @@ namespace Flow.Launcher.Infrastructure
|
|||
public const int SC_MAXIMIZE = (int)PInvoke.SC_MAXIMIZE;
|
||||
public const int SC_MINIMIZE = (int)PInvoke.SC_MINIMIZE;
|
||||
|
||||
public const int WM_POWERBROADCAST = (int)PInvoke.WM_POWERBROADCAST;
|
||||
public const int PBT_APMRESUMEAUTOMATIC = (int)PInvoke.PBT_APMRESUMEAUTOMATIC;
|
||||
|
||||
#endregion
|
||||
|
||||
#region Window Handle
|
||||
|
|
|
|||
|
|
@ -25,7 +25,6 @@ using Flow.Launcher.Plugin;
|
|||
using Flow.Launcher.Plugin.SharedCommands;
|
||||
using Flow.Launcher.Plugin.SharedModels;
|
||||
using Flow.Launcher.ViewModel;
|
||||
using Microsoft.Win32;
|
||||
using ModernWpf.Controls;
|
||||
using DataObject = System.Windows.DataObject;
|
||||
using Key = System.Windows.Input.Key;
|
||||
|
|
@ -96,7 +95,6 @@ namespace Flow.Launcher
|
|||
|
||||
InitSoundEffects();
|
||||
DataObject.AddPastingHandler(QueryTextBox, QueryTextBox_OnPaste);
|
||||
SystemEvents.PowerModeChanged += SystemEvents_PowerModeChanged;
|
||||
_viewModel.ActualApplicationThemeChanged += ViewModel_ActualApplicationThemeChanged;
|
||||
}
|
||||
|
||||
|
|
@ -670,6 +668,16 @@ namespace Flow.Launcher
|
|||
handled = true;
|
||||
}
|
||||
break;
|
||||
case Win32Helper.WM_POWERBROADCAST: // Handle power broadcast messages
|
||||
// https://learn.microsoft.com/en-us/windows/win32/power/wm-powerbroadcast
|
||||
if (wParam.ToInt32() == Win32Helper.PBT_APMRESUMEAUTOMATIC)
|
||||
{
|
||||
// Fix for sound not playing after sleep / hibernate
|
||||
// https://stackoverflow.com/questions/64805186/mediaplayer-doesnt-play-after-computer-sleeps
|
||||
InitSoundEffects();
|
||||
}
|
||||
handled = true;
|
||||
break;
|
||||
}
|
||||
|
||||
return IntPtr.Zero;
|
||||
|
|
@ -679,16 +687,6 @@ namespace Flow.Launcher
|
|||
|
||||
#region Window Sound Effects
|
||||
|
||||
private void SystemEvents_PowerModeChanged(object sender, PowerModeChangedEventArgs e)
|
||||
{
|
||||
// Fix for sound not playing after sleep / hibernate
|
||||
// https://stackoverflow.com/questions/64805186/mediaplayer-doesnt-play-after-computer-sleeps
|
||||
if (e.Mode == PowerModes.Resume)
|
||||
{
|
||||
InitSoundEffects();
|
||||
}
|
||||
}
|
||||
|
||||
private void InitSoundEffects()
|
||||
{
|
||||
if (_settings.WMPInstalled)
|
||||
|
|
@ -1443,7 +1441,6 @@ namespace Flow.Launcher
|
|||
animationSoundWMP?.Close();
|
||||
animationSoundWPF?.Dispose();
|
||||
_viewModel.ActualApplicationThemeChanged -= ViewModel_ActualApplicationThemeChanged;
|
||||
SystemEvents.PowerModeChanged -= SystemEvents_PowerModeChanged;
|
||||
}
|
||||
|
||||
_disposed = true;
|
||||
|
|
|
|||
Loading…
Reference in a new issue