Предотвратить блокировку экрана Windows при игре с джойстиком

1651
anishsane

Моя система Windows 7 настроена на блокировку экрана после 20 минут бездействия. (Принудительная политика Office; невозможно изменить настройки ..)

Когда я использую клавиатуру / мышь, окна воспринимают их как пользовательский ввод и, таким образом, экран остается разблокированным. Однако, когда я играю в любую игру, используя только джойстик, Windows воспринимает это как отсутствие активности. Таким образом, экран блокируется по истечении времени ожидания.

Есть ли способ предотвратить блокировку экрана при использовании игр на основе джойстика?

Как обходной путь, я в настоящее время играю некоторое случайное видео (приглушенное) в фоновом VLC, которое предотвращает блокировку экрана. Но должен быть лучший способ справиться с этой проблемой ...

Я мог бы написать скрипт, который бы имитировал некоторые нажатия клавиш, например, через sendkeys. Тем не менее, всегда есть вероятность побочного эффекта этого. Например, это помешало бы мне использовать эти ключи в моих настройках игры.

10
Да, это может быть достигнуто так, как вы предлагаете. Но вы проверили, можете ли вы переключать схемы питания? (Вместо изменения настроек схемы электропитания.) Иногда в схеме электропитания ** High Performance ** отключены функции энергосбережения. А также: если они заблокировали настройки вашего плана электропитания, оставили ли они разблокированными возможность устанавливать или запускать программное обеспечение, не авторизованное администраторами? miroxlav 9 лет назад 0
«Иногда в высокопроизводительном плане электропитания отключены функции энергосбережения». Хорошая идея. Однако этот параметр применяется в качестве политики в настройках экранной заставки, а не в настройках плана электропитания. «оставляли ли они открытыми возможность устанавливать или запускать программное обеспечение, не авторизованное администраторами» В общем, да, но эти программы не могут изменять параметры, установленные политикой. anishsane 9 лет назад 0
Кто-нибудь знает о каком-либо Windows API, чтобы предотвратить блокировку экрана, которую используют медиаплееры, такие как VLC, при воспроизведении видео? anishsane 9 лет назад 0

1 ответ на вопрос

0
misha256

Whenever you press a key on the keyboard, or move/click the mouse, Windows resets its idle timer. There is a Windows API function you can call that resets the idle timer in exactly the same way. By calling the function at regular intervals, the screen-saver will never activate and the computer will never lock. This is what VLC and other applications do.

The function name is SetThreadExecutionState and is found in kernel32.dll. In VB the actual call looks like this:

SetThreadExecutionState(ES_SYSTEM_REQUIRED Or ES_DISPLAY_REQUIRED)

The two constants being:

ES_SYSTEM_REQUIRED = &H1 and ES_DISPLAY_REQUIRED = &H2

You can't make these calls from VBScript, so you'd need something more advanced to code this up with.

Incidentally, the above is the technically correct way of doing this. Many utilities I've seen on the web use silly tricks like simulating keystrokes or jiggling the mouse. That's bad in my opinion, as it can interfere with your work.

Anyway, I've digressed too much. This kind of stuff belongs on Stack Overflow.