Моя система Windows 7 настроена на блокировку экрана после 20 минут бездействия (это политика на рабочем месте; я не могу изменить этот параметр).
Когда я использую клавиатуру / мышь, Windows обрабатывает их как пользовательский ввод, и, таким образом, экран остается разблокированным. Однако, когда я играю в любую игру, используя только джойстик, Windows воспринимает это как отсутствие активности, и, таким образом, экран блокируется по истечении времени ожидания.
Есть ли способ предотвратить блокировку экрана при использовании игр на основе джойстика?
Как обходной путь, я в настоящее время играю некоторое случайное видео (приглушенное) в фоновом режиме, используя VLC, который предотвращает блокировку экрана. Но должен быть лучший способ справиться с этой проблемой ...
Я мог бы написать скрипт, который бы имитировал некоторые нажатия клавиш, например, {NUMLOCK}{NUMLOCK}
через sendkeys
. Тем не менее, всегда есть вероятность непреднамеренного побочного эффекта, например, запрета использования этих ключей в настройках игры.
источник
Ответы:
Когда вы нажимаете клавишу на клавиатуре или перемещаете / щелкаете мышью, Windows сбрасывает таймер простоя . Вы можете вызвать функцию Windows API, которая точно так же сбрасывает таймер простоя. При регулярном вызове функции экранная заставка никогда не активируется, и компьютер никогда не блокируется. Это то, что делают VLC и другие приложения.
Имя функции находится
SetThreadExecutionState
и находится вkernel32.dll
. В VB фактический вызов выглядит так:SetThreadExecutionState(ES_SYSTEM_REQUIRED Or ES_DISPLAY_REQUIRED)
Две константы:
ES_SYSTEM_REQUIRED = &H1
иES_DISPLAY_REQUIRED = &H2
Вы не можете делать эти вызовы из VBScript, поэтому вам нужно что-то более продвинутое, чтобы кодировать это.
Кстати, вышесказанное является технически правильным способом сделать это. Многие утилиты, которые я видел в Интернете, используют глупые уловки, такие как имитация нажатий клавиш или покачивание мыши. Это плохо на мой взгляд, так как это может помешать вашей работе.
Во всяком случае, я слишком отвлекся. Этот вид материала принадлежит Stack Overflow.
источник
Вы можете использовать
SetThreadExecutionState
функцию, предоставляемую модулем Python ctypes, как часть отдельного приложения Python, которое вы можете запустить в фоновом режиме и выйти с помощью Ctrl + C. (Спасибо за ответ @ misha256 за объяснение использования этой функции!)Я построил этот скрипт для Windows. Посетите страницу релиза GitHub здесь .
источник
0
заполнителя стандартным способом являетсяpass
.Просто запустите файл с именем:
no_sleep.vbs
. Этот текстовый файлno_sleep.vbs
должен содержать текстовое описание ниже.Пожалуйста, Google, если вы не знаете, как создать пустой текстовый файл и переименовать его расширение.
Клавиша F13 не должна мешать настройкам игры
источник