启动和停止屏幕保护程序

时间:2010-08-19 23:54:49

标签: delphi screensaver delphi-2006

应该很简单我会想到的。我想强制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模式,则执行我的代码不会执行任何操作。

1 个答案:

答案 0 :(得分:3)

SPI_SETSCREENSAVEACTIVE实际上并不启动/停止屏幕保护程序。它适用于实际的屏保,让操作系统知道它们正在运行或退出。要启动屏幕保护程序,请尝试将WM_SYSCOMMAND / SC_SCREENSAVE消息发送到GetDesktopWindow()窗口。