【问题标题】:How to get events when the system is suspended and then resuming系统挂起再恢复时如何获取事件
【发布时间】:2018-08-30 11:28:25
【问题描述】:

我想知道当前系统状态是挂起还是恢复。我已经试过SystemEvents.PowerModeChanged += SystemEvents_PowerModeChanged;

private void SystemEvents_PowerModeChanged(object sender, PowerModeChangedEventArgs e)
{
  log.DebugFormat("System Power event {0}", e.Mode.ToString());
}

我想频繁地获取系统的状态。我也不想使用 WMI 查询。有没有其他方法可以检测系统状态。

【问题讨论】:

  • 程序不会在挂起状态下运行,我不确定什么是“恢复”。
  • @RonBeyer 那你可以问问他是什么意思。如您所见,这是一个完全有效的问题。该事件在暂停计算机之前触发,一旦计算机再次被唤醒,就会触发恢复事件。
  • 如果您想跟踪计算机暂停/活动的时间,只需保存上次触发事件的日期/时间,并与它比较新的事件日期。

标签: c# .net power-management


【解决方案1】:

然后,您可以使用 SystemEvents.PowerModeChanged 事件来了解系统是否正在挂起(当您休眠或睡眠时会发生挂起)。

    SystemEvents.PowerModeChanged += new PowerModeChangedEventHandler(OnPowerModeChanged);


    private static void OnPowerModeChanged(object sender, PowerModeChangedEventArgs e)
    {
        switch (e.Mode)
        {
            case PowerModes.Resume:
                MessageBox.Show("PowerMode: OS is resuming from suspended state");
                break;

            case PowerModes.Suspend:
                MessageBox.Show("PowerMode: OS is about to be suspended");
                break;
        }
    }

希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多