Прослушайте событие отключения экрана и отключите мышь в Windows

0

Я хочу, чтобы мышь не просыпалась от экрана (когда компьютер включен, но экраны выключены или включена заставка).

Я прочитал все ресурсы, рассказывающие мне точно, как «это невозможно сделать», например, этот вопрос , Или те, кто говорит, отключите вашу мышь, или поверните мышь вверх ногами, или не дайте мышке разбудить компьютер из сна. - Не заинтересованы в тех.

Я хочу, чтобы кто-то помог мне разобраться в этом решении:

  • как перехватить событие отключения монитора или заставку при событии.
  • если нет, то, по крайней мере, перехватите явную команду отключения монитора, которую я посылаю, запустив файл monitorsOff.bat, команду nircmd или команду AutoHotkey AHK.
  • затем запустите скрипт, который немедленно отключил мою мышь / мышь / периферийные устройства.
  • затем, если экраны возвращаются в рабочее состояние, или если хранитель экрана закрыт, или, по крайней мере, если нажата какая-либо клавиша на клавиатуре, повторно включите мышь.

Приветствия.

[РЕДАКТИРОВАТЬ]

У нас есть одно отличное решение с AHK от пользователя 3419297. В идеале, хотя функциональность должна работать, если / когда окна заблокированы (не вышли из системы, но заблокированы).

Может быть, каким-то образом использовать липкие клавиши, как сказал DaaBoss, или другие части доступности Windows.

Spectraljump
источник
Бесполезно, что «редакторская полиция» ненавидела / подавляла голоса и не могла понять, ПОЧЕМУ вы этого хотите (Устали от этого!) Я действительно понимаю и вижу ценность в разработке отличного решения. Я не думаю, что вы увидите «легкий ответ» здесь. Если бы был способ связаться с вами, мы могли бы идти вперед и назад, пока мы оба не были удовлетворены. ПОТОМ разместите ответ с помощью ОБРАЗЕЦ кода, но у вас также есть приличное «коммерчески приемлемое» решение. Ключевым моментом здесь является дизайн отличного интерфейса. Например, может быть, использовать метод «липких клавиш» Windows должен пробудить экран, только применив к мыши вместо клавиатуры.
DaaBoss

Ответы:

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
user3419297
источник
Это довольно хорошо. Я изменился BlockInput On в BlockInput MouseMove а также BlockInput Off в BlockInput MouseMoveOff, Не могу понять, как разблокировать его, нажав любую клавишу на клавиатуре вместо одной клавиши F1 или чего-то еще.
Spectraljump
Я немного подожду альтернатив, прежде чем приму этот ответ, потому что AHK, очевидно, не работает, если Windows заблокирована (что в конечном итоге делает мой компьютер, он сам блокируется), поэтому, если мышь перемещается и окна заблокированы, светится экран вверх.
Spectraljump
Смотрите также мой отредактированный ответ.
user3419297