介绍

最近有一个需求:需要在锁定后关闭屏幕。

环境

  • Windows 10 21H2
  • AutoHotKey v1.1.33.10

方法

方法很简单,只需要向 Windows 发送一条关闭显示器的消息即可:

1
SendMessage, WM_SYSCOMMAND, SC_MONITORPOWER, PWOER_SHUT_OFF

在实际使用时,没必要为了这么个小东西安装 Visual Studio 来编译一个小程序,可以用 AutoHotKey 来实现效果。

AutoHotkey 在 PostMessage 文档中给的第一个例子就是如何关闭显示器,用的就是发送消息方法,不过将消息名称替换为具体的十六进制值:

1
SendMessage, 0x0112, 0xF170, 2,, Program Manager  ; 0x0112 is WM_SYSCOMMAND, 0xF170 is SC_MONITORPOWER.

代码

这里还有一个问题就是能不能用 Win+L 这个默认锁定键实现锁定+关屏操作,实测发现可以。

另外还需要在锁定后等待 1000ms 再关屏,否则某些情况下屏幕会被唤醒。

1
2
3
4
5
6
7
8
9
#NoEnv  ; Recommended for performance and compatibility with future AutoHotkey releases.
; #Warn  ; Enable warnings to assist with detecting common errors.
SendMode Input  ; Recommended for new scripts due to its superior speed and reliability.
SetWorkingDir %A_ScriptDir%  ; Ensures a consistent starting directory.

#l::
DllCall("LockWorkStation")
Sleep, 1000
SendMessage, 0x0112, 0xF170, 2,, Program Manager

使用

将上述代码保存为 ahk 文件后运行,按 Win+L 即可一键锁定+关屏。

参考资料