🐼
WinUI3でSystemEvents (PowerModeChangedとか)
はじめに
WinUI3に挑戦してて、スリープからの復帰検知したくてSystemEvents.PowerModeChanged
使おうとしたけど、結構詰まったので備忘録
内容
- SystemEventsのインストール
Nugetからインストール (ここ)
ないとそもそもビルドできない。
- イベント登録
イベント登録は専用のスレッド(InvokeOnEventsThread
)からする。
でないと呼ばれない。
確認していないけど登録解除もおそらく同じ。
Microsoft.Win32.SystemEvents.InvokeOnEventsThread(() =>
{
Microsoft.Win32.SystemEvents.PowerModeChanged += (s, e) => logger.Debug($"OnPowerModeChanged:{e.Mode}");
Microsoft.Win32.SystemEvents.SessionSwitch += (s, e) => logger.Debug("OnSessionSwitch");
Microsoft.Win32.SystemEvents.SessionEnding += (s, e) => logger.Debug("OnSessionEnding");
Microsoft.Win32.SystemEvents.SessionEnded += (s, e) => logger.Debug("OnSessionEnded");
Microsoft.Win32.SystemEvents.EventsThreadShutdown += (s, e) => logger.Debug("OnEventsThreadShutdown");
});
参考
Discussion