我正在尝试在键盘上切换Num Lock,Caps Lock和Scroll Lock的指示灯。 (我只想让它们在夜间自动将其关闭。)使用AutoHotkey或AutoIt可以做到这一点。但是,如果工作站已锁定,该脚本不会生效。
[虽然研究这样做会进行某种DLL调用,但在SetKeyboardState
中遇到了user32.dll
。不幸的是,根据Windows Dev Center文档,无法使用SetKeyboardState
设置这三个键的键盘状态(并且每个键都由名称提及)。
https://docs.microsoft.com/en-us/windows/desktop/api/winuser/nf-winuser-setkeyboardstate
另一个线程据说仅在AutoIt中使用ControlSend
。即使没有活动的GUI会话,或者交互使用键盘/鼠标,这通常也非常可靠。
以下作品很棒:
ControlSend("", "", "", "{NUMLOCK off}")
...,但仅当存在活动的GUI会话时。屏幕锁定时,此功能无效。
我知道这些是特殊键:它们不是控制软件线程的输入状态,而是物理键盘状态的一部分,并控制整个系统的全局输入。
有没有其他选择?用任何语言?
我正在尝试在键盘上切换Num Lock,Caps Lock和Scroll Lock的指示灯。 (我只是想让它们在夜间自动关闭它们。)使用...
至少在Windows上,工作站锁定时似乎真的没有办法切换这些键。无论使用哪种语言或框架,都需要通过底层的OS层。如果没有交互式会话,则不会发送这些按键。