2009-09-18 51 views
4

一般而言,屏幕保护程序将在我们一段时间内什么都不做时运行。
现在我想知道如何获得无效的时间。
换句话说,如果我们在一段时间内什么都不做,我想制作一个程序来运行一个函数。
现在我可以使用鼠标或键盘钩来解决问题。
但是你知道,它需要管理员权限。换句话说,如果在win vista或者win 7中,那是因为UAC而令人恶心的。
我需要一个API来获取最后一个窗口的活动时间。如何通过windows api获取最后一个窗口的活动时间

回答

4

CallNtPowerInformation() API是为了获得最后的电力信息
我应该使用GetLastInputInfo()

+0

GetLastInputInfo()不会为您提供系统范围的空闲时间,以便Windows闲置时或屏幕保护程序启动。它仅为您提供正在运行的进程的空闲时间。 CallNtPowerInformation()为您提供系统空闲时间。 – 2009-09-18 05:06:25

+0

@JohnDeters文档声明了一些不同的内容:“GetLastInputInfo仅为调用该函数的会话提供会话特定的用户输入信息。”我会将会话解释为“用户会话”,即RDS会话。 – 2018-02-05 22:24:45

2

调查CallNtPowerInformation()并请求一个SYSTEM_POWER_INFORMATION结构。

+0

的SYSTEM_POWER_INFORMATION结构“包含了系统的空闲信息。” TimeRemaining是“空闲计时器中的剩余时间,以秒为单位”。懒惰是以百分比表示的数字。 typedef struct _SYSTEM_POWER_INFORMATION { ULONG MaxIdlenessAllowed; ULONG懒惰; ULONG TimeRemaining; UCHAR CoolingMode; } SYSTEM_POWER_INFORMATION,* PSYSTEM_POWER_INFORMATION; – 2009-09-18 03:15:28

相关问题