запуск и остановка заставки - PullRequest
1 голос
/ 20 августа 2010

Должно было быть просто, я бы подумал. Я хочу заставить компьютер перейти в режим заставки и выйти из него, когда условия, которые я проверяю в 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, похоже, не имеют никакого эффекта. Если я переведу ПК в режим SS с помощью кнопки «Предварительный просмотр» в диалоговом окне «Свойства экрана панели управления», выполнение моего кода ничего не даст.

1 Ответ

3 голосов
/ 20 августа 2010

SPI_SETSCREENSAVEACTIVE фактически не запускает и не останавливает экранную заставку. Это предназначено для фактических заставок звонить, чтобы сообщить ОС, что они работают или выходят. Чтобы запустить заставку, попробуйте отправить сообщение WM_SYSCOMMAND / SC_SCREENSAVE в окно GetDesktopWindow ().

...