Meu sistema Windows 7 está definido para bloquear a tela após 20 minutos de inatividade (esta é uma política aplicada ao local de trabalho; não posso alterar essa configuração).
Quando estou usando o teclado / mouse, o Windows os trata como entradas do usuário e, portanto, a tela permanece desbloqueada. No entanto, quando estou jogando qualquer jogo usando apenas o joystick, o Windows trata isso como nenhuma atividade e, portanto, a tela fica bloqueada após o tempo limite.
Existe uma maneira de impedir o bloqueio da tela enquanto estiver usando jogos com joystick?
Como solução alternativa, atualmente estou reproduzindo um vídeo aleatório (sem áudio) em segundo plano usando o VLC, o que impede o bloqueio da tela. Mas deve haver uma maneira melhor de lidar com esse problema ...
Eu poderia escrever um script, que simulasse algumas teclas como {NUMLOCK}{NUMLOCK}
via sendkeys
. No entanto, sempre há a possibilidade de um efeito colateral não intencional disso, como impedir que eu use essas chaves nas minhas opções de jogo.
fonte
Respostas:
Sempre que você pressiona uma tecla do teclado ou move / clica no mouse, o Windows redefine o timer ocioso . Há uma função da API do Windows que você pode chamar que redefine o timer inativo exatamente da mesma maneira. Ao chamar a função em intervalos regulares, o protetor de tela nunca será ativado e o computador nunca será bloqueado. É isso que o VLC e outros aplicativos fazem.
O nome da função é
SetThreadExecutionState
e é encontrado emkernel32.dll
. No VB, a chamada real é assim:SetThreadExecutionState(ES_SYSTEM_REQUIRED Or ES_DISPLAY_REQUIRED)
As duas constantes são:
ES_SYSTEM_REQUIRED = &H1
eES_DISPLAY_REQUIRED = &H2
Você não pode fazer essas chamadas a partir do VBScript, portanto, você precisará de algo mais avançado para codificar isso.
Aliás, o acima é a maneira tecnicamente correta de fazer isso. Muitos utilitários que eu vi na Web usam truques tolos como simular pressionamentos de teclas ou agitar o mouse. Isso é ruim na minha opinião, pois pode interferir no seu trabalho.
De qualquer forma, eu divaguei demais. Esse tipo de coisa pertence ao Stack Overflow.
fonte
Você pode usar a
SetThreadExecutionState
função, conforme fornecido pelo módulo ctypes do Python, como parte de um aplicativo Python independente, você pode executar em segundo plano e sair com Ctrl + C. (Obrigado pela resposta de @ misha256 por explicar o uso desta função!)Eu criei esse script para Windows. Visite a página de lançamento do GitHub aqui .
fonte
0
espaço reservado, a maneira padrão épass
.Basta executar um arquivo chamado:
no_sleep.vbs
. Este arquivo de textono_sleep.vbs
deve conter o assunto de texto abaixo.Pesquise no Google se não souber como criar um arquivo de texto em branco e renomeie sua extensão.
A tecla F13 não deve interferir nas opções do jogo
fonte