Что лучше всего обнаружить при изменении состояния питания Windows?определить изменение состояния электропитания
мне нужно преформ некоторые действия, в зависимости от того, компьютер будет ждущий/спящий режим/Выключение
Что лучше всего обнаружить при изменении состояния питания Windows?определить изменение состояния электропитания
мне нужно преформ некоторые действия, в зависимости от того, компьютер будет ждущий/спящий режим/Выключение
SystemEvents.PowerModeChanged
событие должно делать то, что вы хотите
Вы также можете проверить SystemInformation.PowerStatus
недвижимость ,
Если вам нужно событие сна, это работает лучше:
private ManagementEventWatcher managementEventWatcher;
private readonly Dictionary<string, string> powerValues = new Dictionary<string, string>
{
{"4", "Entering Suspend"},
{"7", "Resume from Suspend"},
{"10", "Power Status Change"},
{"11", "OEM Event"},
{"18", "Resume Automatic"}
};
public void InitPowerEvents()
{
var q = new WqlEventQuery();
var scope = new ManagementScope("root\\CIMV2");
q.EventClassName = "Win32_PowerManagementEvent";
managementEventWatcher = new ManagementEventWatcher(scope, q);
managementEventWatcher.EventArrived += PowerEventArrive;
managementEventWatcher.Start();
}
private void PowerEventArrive(object sender, EventArrivedEventArgs e)
{
foreach (PropertyData pd in e.NewEvent.Properties)
{
if (pd == null || pd.Value == null) continue;
var name = powerValues.ContainsKey(pd.Value.ToString())
? powerValues[pd.Value.ToString()]
: pd.Value.ToString();
Console.WriteLine("PowerEvent:"+name);
}
}
public void Stop()
{
managementEventWatcher.Stop();
}
Это работает, когда я физически отключил монитор? – alap
Я смотрел на PowerModeChanged от мысли, что должен был сделать с тем, что питание компьютера. как неправильно было я .. – Steven
не работает для окон 10 – Choletski