Я хочу запретить мыши выводить экраны из спящего режима (когда компьютер включен, но экраны выключены или включена заставка).
Я прочитал все ресурсы, в которых мне точно говорят, что «это невозможно сделать», например:этот вопрос. Или те, кто говорит, что нужно отключать мышь, переворачивать мышь вверх дном или не давать мыши выводить компьютер из спящего режима. - Меня это не интересует.
Я хочу, чтобы кто-нибудь помог мне найти решение этой проблемы:
- как перехватить событие выключения монитора или событие включения заставки.
- если нет, то хотя бы перехватите явную команду отключения монитора, которую я отправляю, запустив файл monitorsOff.bat или команду nircmd или команду AutoHotkey AHK.
- затем запустить скрипт, который немедленно отключит мою мышь/мыши/неклавиатурные периферийные устройства.
- затем, если экраны снова активизировались, или если заставка закрыта, или, по крайней мере, если была нажата какая-либо клавиша на клавиатуре, снова включите мышь.
Ваше здоровье.
[РЕДАКТИРОВАТЬ]
У нас есть одно отличное решение с AHK от user3419297. В идеале эта функциональность должна работать и если/пока Windows заблокирована (не вышла из системы, а именно заблокирована).
Может быть, как-то использовать залипающие клавиши, как сказал DaaBoss, или другие части специальных возможностей Windows.
решение1
Попробуйте этот скрипт AHK:
$F1 Up:: ; or whatever combination you want
Keyboard_Blocked := true ; assign the Boolean value "true" or "1" to this variable
BlockInput On ; disable keyboard and mouse
SendMessage, 0x112, 0xF170, 2,, Program Manager ; turn the monitor off, similar to power saving mode
; or:
; Run path of your screensaver
return
; The #If directive creates context-sensitive hotkeys:
#If (Keyboard_Blocked) ; If this variable has the value "true"
$F1 Up:: ; press F1 to re-enable keyboard and mouse and turn the monitor on
BlockInput Off
Keyboard_Blocked := false
return
#If ; turn off context sensitivity
РЕДАКТИРОВАТЬ:
Вместо того, чтобы настраивать в параметрах питания время бездействия, после которого монитор выключается, или нажимать Win+L для блокировки системы, вы можете сделать это с помощью постоянно работающего скрипта AHK. В этом скрипте вы можете добавить больше вещей (горячие клавиши, горячие строки, функции и т. д.), которые облегчат вашу работу.
#NoEnv
#SingleInstance Force
SetTimer, DetectTimeIdle, 50
return
DetectTimeIdle:
; lock the computer automatically after 20 seconds of inactivity.
; Replace 20000 with 60000 for 1 minute etc.
If (A_TimeIdle > 20000) ; as long as there is no input within the last 20 seconds
GoSub !F1 Up ; jump to this hotkey definition
return
; Press Alt+F1 to manually lock the computer
!F1 Up::
Keyboard_Blocked := true ; assign the Boolean value "true" or "1" to this variable
BlockInput On ; disable keyboard and mouse
SendMessage, 0x112, 0xF170, 2,, Program Manager ; turn the monitor off, similar to power saving mode
return
#If (Keyboard_Blocked)
; press F1 or F2 or Space ... to re-enable keyboard and mouse and turn the monitor on
$F1 Up::
$F2 Up::
$Space Up::
; ...
BlockInput Off
Keyboard_Blocked := false
; Move the mouse (speed 10) by 20 pixels to the right and 30 pixels down from its current location to unlock the computer:
MouseMove, 20, 30, 10, R
reload
return
#If