目前大部分监控软件都是基于DDRAW来显示的,在屏保/系统关闭显示器/待机之后,画面会消失。
可用下面的代码阻止屏保/系统关闭显示器/待机
//记录是否启用屏幕保护
BOOL bScreenSaverActive = FALSE;
//阻止屏保
//获取是否启用屏幕保护
SystemParametersInfo(SPI_GETSCREENSAVEACTIVE,0,&bScreenSaverActive,0);
if(bScreenSaverActive)
{
//阻止屏保
BOOL active=FALSE;
SystemParametersInfo(SPI_SETSCREENSAVEACTIVE,FALSE,&active,SPIF_SENDWININICHANGE);
}
//阻止系统关闭显示器或进入待机状态
SetThreadExecutionState(ES_CONTINUOUS | ES_DISPLAY_REQUIRED | ES_SYSTEM_REQUIRED);
下面的代码用于取消阻止屏保/系统关闭显示器/待机
//取消阻止屏保
if(bScreenSaverActive)
{
//取消阻止屏保
BOOL active=FALSE;
SystemParametersInfo(SPI_SETSCREENSAVEACTIVE,TRUE,&active,SPIF_SENDWININICHANGE);
}
//取消阻止系统关闭显示器或进入待机状态
SetThreadExecutionState(ES_CONTINUOUS);