Domanda

avrebbe dovuto essere semplice avrei pensato. Voglio forzare il PC per andare in modalità screen saver, e uscire quando le condizioni io sono il check-in da D2006) app diventano realtà. Non sembra al lavoro:

    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 sta tornando vero in ogni caso. Le chiamate a SystemParametersInfo non sembrano avere alcun effetto. Se metto il PC in modalità SS utilizzando il pulsante "Anteprima" nella finestra di dialogo Proprietà pannello Control Display, eseguendo il mio codice non fa nulla.

È stato utile?

Soluzione

SPI_SETSCREENSAVEACTIVE in realtà non avviare / fermare il salvaschermo. È pensato per screensaver effettivi di chiamare a far conoscere al sistema operativo che sono in esecuzione o in uscita. Per avviare il salvaschermo, provare a inviare un messaggio WM_SYSCOMMAND / SC_SCREENSAVE al GetDesktopWindow () finestra.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top