每次用户触摸键盘或鼠标时,Windows都会重置IDLE时间。我的应用程序需要在特定时刻重置IDLE时间,但我无法弄清楚如何以编程方式执行此操作。
以下内容不会使用VB,C#或QT4重置IDLE时间
- 程序化鼠标移动/点击。
- 程序化击键
不知何故,Windows知道这些行为是模拟的。
如何重置IDLE时间?任何想法将不胜感激!
答案 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。