如何防止屏幕保护程序和我的程序执行期间睡眠?

问题描述:

在Win7上运行的c ++程序中,有没有办法伪造一个鼠标移动或类似的东西,只是为了保持屏幕保护程序不启动和系统进入睡眠?我正在寻找最小的方法,我不喜欢使用.NET。
感谢,
-nuun

In a c++ program run on Win7, is there a way to fake a mouse movement or something like that, just to keep the screen saver from starting and the system from going to sleep? I'm looking for the minimal approach and I prefer not to use .NET. Thanks, -nuun

不要混淆屏幕保护程序设置,使用 SetThreadExecutionState 。这是用于通知窗口您的应用程序是活动的API的API:

Don't mess with the screensaver settings, use SetThreadExecutionState. This is the API for informing windows on the fact that your application is active:


允许应用程序通知
系统它正在使用中,从而
防止系统进入
睡眠或关闭显示器而
应用程序正在运行。

Enables an application to inform the system that it is in use, thereby preventing the system from entering sleep or turning off the display while the application is running.


多媒体应用程式,例如影片
播放器和简报应用程式,
必须使用ES_DISPLAY_REQUIRED当他们
长时间显示视频
没有用户输入

Multimedia applications, such as video players and presentation applications, must use ES_DISPLAY_REQUIRED when they display video for long periods of time without user input