Переключить NUMLOCK / CAPSLOCK / SCROLLLOCK, пока рабочая станция заблокирована? - PullRequest
0 голосов
/ 14 октября 2018

Я пытаюсь переключить световые индикаторы на клавиатуре на Num Lock, Caps Lock и Scroll Lock.(Я просто хочу, чтобы они выключали их автоматически в ночное время.) Это тривиально, используя AutoHotkey или AutoIt.Тем не менее, сценарий не работает, если рабочая станция заблокирована.

Во время исследования этого будет некоторый вызов DLL, я наткнулся на SetKeyboardState в user32.dll.К сожалению, согласно документации Центра разработки для Windows, невозможно установить состояние клавиатуры этих трех клавиш (и каждая из них упоминается по имени), используя SetKeyboardState.

https://docs.microsoft.com/en-us/windows/desktop/api/winuser/nf-winuser-setkeyboardstate


Другой поток сказал просто использовать ControlSend в AutoIt.Это, как правило, очень надежно, даже когда нет активного сеанса графического интерфейса или когда клавиатура / мышь используются в интерактивном режиме.

Прекрасно работает следующее:

ControlSend("", "", "", "{NUMLOCK off}")

... но толькокогда есть активный сеанс GUI.Это не действует, когда экран заблокирован.


Я знаю, что это специальные клавиши: вместо того, чтобы управлять состоянием ввода программного потока, они являются частью физического состояния клавиатуры и управляют глобальным вводом длявся система.

Есть ли варианты вообще?На каком языке?

...