Como ajustar programaticamente as configurações de registro do Windows Screensaver

StackOverflow https://stackoverflow.com/questions/1369754

  •  21-09-2019
  •  | 
  •  

Pergunta

Estou trabalhando no código que deve iniciar o protetor de tela definido pelas preferências do usuário. (O código está em Java, mas será executado apenas no Windows.) Minha abordagem atual é definir o valor da tela Screensavetimeout no registro como 1; Em teoria, isso deve chutar o protetor de tela após um atraso de apenas um segundo.

Mas, na prática, não faz isso. Eu acabei os valores no painel HKEY_CURRENT_USER Control Desktop ScreensaveTimeout e HKEY_USERS.Default Control Painel Desktop ScreensaveTimeout sem resultados. Eu posso ver os valores alterados quando aceito o Regedit, mas o valor "aguarda" nas propriedades de exibição -> economia de tela não muda.

Um tópico de troca de especialistas indicou que eu deveria fazer isso para fazer as alterações efetivas imediatamente:

%SystemRoot%\System32\RUNDLL32.EXE user32.dll, UpdatePerUserSystemParameters

... mas isso não parecia fazer nada.

Algum conselho ou insights sobre o que estou fazendo de errado?

Foi útil?

Solução

Para ativar o protetor de tela, você pode achar mais fácil executar o arquivo .scr com um parâmetro '/s', assim:

C:\WINDOWS\system32\ssstars.scr /s

Ou não posso dizer muito sobre como fazer isso do Java, mas se você puder chamar as funções no usuário32.dll, poderá controlar o economizador da tela como um usuário final. Aqui estão alguns links:

(Por fim, existe o método .NET, mas novamente não tenho idéia de como obter isso de Java: http://zayko.net/post/c-how-to-disable-windows-screensaver-programticaticamente.aspx)

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top