在工作站锁定时切换NUMLOCK / CAPSLOCK / SCROLLLOCK?

问题描述 投票:0回答:1

我正在尝试在键盘上切换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 user32 capslock num-lock scroll-lock
1个回答
0
投票

至少在Windows上,工作站锁定时似乎真的没有办法切换这些键。无论使用哪种语言或框架,都需要通过底层的OS层。如果没有交互式会话,则不会发送这些按键。

© www.soinside.com 2019 - 2024. All rights reserved.