Windows 操作系统有一个检测空闲状态的服务。详细信息:任务空闲条件
如果所有处理器和所有磁盘在过去 15 分钟内闲置时间超过 90%,并且在此期间没有键盘或鼠标输入,则认为计算机处于闲置状态。当任务计划程序服务检测到计算机处于闲置状态时,该服务仅等待用户输入以标记闲置状态的结束。
它对于有键盘和鼠标的普通 PC 非常有用。我们可以使用标准任务计划程序在 PC 处于空闲状态时启动一些进程(如碎片整理),并在 PC 不处于空闲状态时停止。
但是,当我们使用没有键盘和鼠标的独立服务器时,我们应该使用什么呢?服务器有时通过 TCP/IP 接收命令并启动 CPU 和 HDD 活动。但有时 CPU 和 HDD 活动处于零水平。
我想利用这段时间启动碎片整理或其他进程。但是这个在“空闲”状态启动的进程应该在出现其他命令时终止。因此,标准空闲状态条件无法帮助我,因为我们没有用户输入来停止空闲状态。我需要更多可自定义的空闲状态检测器。自动启动的进程不应该影响空闲状态,但当出现其他进程时,PC 应该离开空闲状态。我应该使用什么?
也许存在一些高级任务调度程序?或者我应该用 C# 编写一些有用的实用程序?
我希望这是一项标准任务,并且所有有用的实用程序都已编译:)
答案1
如果没有用户输入,服务器应该使用以下方法监控空闲时间:
BOOL WINAPI GetSystemTimes(
_Out_opt_ LPFILETIME lpIdleTime,
_Out_opt_ LPFILETIME lpKernelTime,
_Out_opt_ LPFILETIME lpUserTime
);