提问人:Vahidreza Arabpour 提问时间:11/15/2023 更新时间:11/15/2023 访问量:17
如何使用 C 在 Windows 服务中找出系统进入新式待机模式#
How to find out system is entering the Modern Standby mode in Windows service using C#
问:
我正在开发用 C# 编写的 Windows 服务。我需要确定系统是否进入睡眠模式,以及它是否从睡眠模式恢复以执行某些进程并设置一些变量。我使用系统管理来执行此操作,但它没有获得新式待机进入事件回调。
我的服务在不支持新式待机的设备上工作正常,但在支持此待机模式的设备上不会引发任何事件。 有没有办法获得这个事件?
以下是负责电源管理监视的部分代码:
WqlEventQuery query = new WqlEventQuery("Win32_PowerManagementEvent");
_powerManagementWatcher = new ManagementEventWatcher(query);
_powerManagementWatcher.EventArrived += PowerEventArrived;
_powerManagementWatcher.Start();
.
.
.
.
private void PowerEventArrived(object sender, EventArrivedEventArgs e)
{
int eventType = Convert.ToInt32(e.NewEvent.Properties["EventType"].Value);
Log.Info($"System power event called. Event type number: {eventType}");
if (eventType == 7) // PBT_APMRESUMESUSPEND
{
Log.Info("System is waking from sleep.");
}
else if (eventType == 8) // PBT_APMRESUMESTANDBY
{
Log.Info("System is resuming from standby.");
}
else if (eventType == 4) // PBT_APMSUSPEND
{
Log.Info("System is going to sleep.");
}
else if (eventType == 5) // PBT_APMSTANDBY
{
Log.Info("System is going to Standby mode.");
}
}
答: 暂无答案
评论