avvio e l'arresto del salvaschermo
-
29-09-2019 - |
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.
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.