应该很简单我会想到的。我想强制PC进入屏幕保护模式,并在D2006应用程序检查条件时退出它。它似乎不起作用:
if ScreenSaverExitRequested then
begin
SystemParametersInfoResult := SystemParametersInfo(SPI_GETSCREENSAVERRUNNING, 0, @ScreenSaverIsRunning, 0);
if ScreenSaverIsRunning then
begin
SystemParametersInfoResult := SystemParametersInfo(SPI_SETSCREENSAVEACTIVE, UINT(false), nil, SPIF_SENDWININICHANGE);
end ;
end ;
....
if ScreenSaverEntryRequested then
begin
SystemParametersInfoResult := SystemParametersInfo (SPI_SETSCREENSAVEACTIVE, 1, nil, SPIF_SENDWININICHANGE) ;
end ;
SystemParametersInfoResult在每种情况下都返回true。对SystemParametersInfo的调用似乎没有任何效果。如果我使用“控制面板显示属性”对话框中的“预览”按钮将PC置于SS模式,则执行我的代码不会执行任何操作。
答案 0 :(得分:3)
SPI_SETSCREENSAVEACTIVE实际上并不启动/停止屏幕保护程序。它适用于实际的屏保,让操作系统知道它们正在运行或退出。要启动屏幕保护程序,请尝试将WM_SYSCOMMAND / SC_SCREENSAVE消息发送到GetDesktopWindow()窗口。