以编程方式重置Windows XP IDLE时间

时间:2011-02-11 00:19:34

标签: c# vb.net windows qt4

每次用户触摸键盘或鼠标时,Windows都会重置IDLE时间。我的应用程序需要在特定时刻重置IDLE时间,但我无法弄清楚如何以编程方式执行此操作。

以下内容不会使用VB,C#或QT4重置IDLE时间 - 程序化鼠标移动/点击。
- 程序化击键 不知何故,Windows知道这些行为是模拟的。

如何重置IDLE时间?任何想法将不胜感激!

3 个答案:

答案 0 :(得分:4)

使用SetThreadExecutionState()。 ES_SYSTEM_REQUIRED选项(2)重置系统空闲计时器。访问pinvoke.net获取所需的声明。

答案 1 :(得分:3)

例如,如果您需要显示屏,请拨打SetThreadExecutionState(ES_DISPLAY_REQUIRED | ES_CONTINUOUS);

在2000 / XP上你可以使用ES_USER_PRESENT标志(在Vista +上不起作用)

要禁用屏幕保护程序,您可以处理WM_SYSCOMMAND的SC_SCREENSAVE(您必须是前台窗口,否则请使用SystemParametersInfo)

答案 2 :(得分:1)

原则上SetThreadExecutionState()应该做你需要的。但我发现在某些现代Windows上某些情况下不能使用系统必需的标志。对不起,我记不起确切的细节了。

作为后备,您可以通过调用带有空鼠标移动消息的SendInput()来伪造一些输入。我的猜测是你的输入伪造失败了,因为你调用了SendMessage或PostMessage。