AutoHotKey 实现 Windows 锁屏后立刻息屏

背景

在 Windows 系统中,使用快捷键 Win+L 可以使得系统立即锁定。然而,Windows Hello 功能会在锁屏界面开启时立刻进行面部识别,这导致了一个奇葩的结果:我刚锁定的系统立刻又被解锁。

解决方案

Windows 官方

“你好,我们直接摆烂。” [1]

AutoHotKey

知乎 @QkNM 用户给出了一个解决方案 [2],我完善了里面提到的 AutoHotKey 脚本:

; 按下 Win+L,系统锁定屏幕后息屏
#L::

; 手动延迟,因为此电脑锁屏到自动唤起界面有延迟,要保证下一个命令在此之后执行,时长根据情况自行调整
sleep 100

; 息屏,调用系统 API SendMessage,发送 WM_SYSCOMMAND 消息,参数为 SC_MONITORPOWER
SendMessage 0x112, 0xF170, 2, , Program Manager

; 返回
return

如果希望使用其它快捷键实现,则要补充 DllCall("LockWorkStation") 实现锁定屏幕的功能,完整代码如下:

; 按下 ctrl+alt+L,系统锁定屏幕后息屏
^!L::

; 锁定屏幕(这行代码在这里没有必要,因为这是 Win+L 原有的功能,除非是设置别的 hotkeys)
DllCall("LockWorkStation") 

; 手动延迟,因为此电脑锁屏到自动唤起界面有延迟,要保证下一个命令在此之后执行,时长根据情况自行调整
sleep 100

; 息屏,调用系统 API SendMessage,发送 WM_SYSCOMMAND 消息,参数为 SC_MONITORPOWER
SendMessage 0x112, 0xF170, 2, , Program Manager

; 返回
return

使用说明

本脚本在 AutoHotKey1.0 上运行良好,2.0也没关系,会自行检测并引导安装 1.0 版本。
把代码复制到 .txt 中改文件后缀为 .ahk,并使用 AutoHotKey 安装路径中提供的 Ahk2Exe 转化为 .exe 后双击执行即可生效。想要实现开机自启动的话把 .exe 放在 C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup 路径下即可 [3]。
关于 AutoHotKey 脚本的语法,可参考 [4]。

其它脚本

我还推荐实现 CapLock 键切换中英文(短按),将大小写调整为长按(与 Mac 类似),这有利于避免 Shift + ... 操作时的误触 [5]。

参考

[1] answers.microsoft.com/zh-hans/windows/forum/all/windows/46ae2d17-0241-488b-9bba-18de19d5239e
[2] zhuanlan.zhihu.com/p/515053223
[3] blog.csdn.net/qq_43555917/article/details/106523588
[4] zhuanlan.zhihu.com/p/59697660
[5] https://www.zhihu.com/question/54950297

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值