【问题标题】:How to calculate system idle time out and put the machine to sleep?如何计算系统空闲超时并使机器进入睡眠状态?
【发布时间】:2010-12-08 15:22:07
【问题描述】:

是否有任何东西可以提供系统范围的最后用户输入信息?我们想使用 C# 来获取系统在所有会话中的空闲时间,并在 X 分钟内无人使用机器时让机器进入睡眠状态。

GetLastInputInfo 似乎是用户特定的。 http://msdn.microsoft.com/en-us/library/ms646302(VS.85).aspx

【问题讨论】:

  • 为什么不让 Windows 自己做呢?
  • 它应该是一种解决方案,可以在机器空闲时让机器进入睡眠状态,而不管登录的用户如何。
  • 系统处于空闲状态与用户未与系统交互是不同的。例如,系统可能正忙于播放电影或音乐。
  • 有效点。那么,有没有一种“真正好的”方法来判断系统是否处于空闲状态?
  • Simon Mourier 对此有一个解决方案。我不知道它对你来说是否“真的足够好”。

标签: c# .net windows


【解决方案1】:

您可以使用 Windows Task Scheduler 并注册一个在系统空闲时启动的任务。这是最好的方法,因为确定系统的空闲状态并不那么明显(至少请查看这篇文章以了解它的含义)。您还可以使用安全等保护任务。有关此内容的更多信息,请参见此处:Task Idle Conditions

要在 C# 中编写任务调度程序,您可以使用各种包装器。这里至少有一个:Task Scheduler Managed Wrapper

【讨论】:

  • 不幸的是,这个答案已经过时了。现在,任务计划程序中的这些设置被定义为已弃用,它们将无法正常工作。
  • @Grisha - 只有一些设置(Duration 和 WaitTimeout)被弃用,但空闲状态仍然存在。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-06
  • 1970-01-01
  • 2023-03-20
  • 2019-03-04
  • 2014-01-23
  • 1970-01-01
相关资源
最近更新 更多