Windows 使用屏幕保护设置动态锁屏界面
一个有(wu)趣(liao)的折腾
目的:让 Windows 锁屏界面更灵活有趣一些。
Windows 锁屏界面只能显示图片,Windows 聚焦
会自动更新图片,本来还不错,但是在锁屏界面还要放广告,就不能忍。
也可以使用自定义文件夹,然后手动或者使用程序自动地更新这个文件夹中的图片,但也只能 Windows 默认的方式播放。
而 Windows 的屏幕保护程序是有比较大的灵活空间的,甚至可以自己写一个。
有没有办法使用屏幕保护程序做锁屏界面呢?从概念上来说,不可以,因为这是两个不同的东西。
what's the difference between a lock screen and a screensaver - Microsoft Community
但从效果上来说,并非不可以。
这里的效果是指:
1 可以自定义触发屏幕保护程序,类似 Win+L
快捷键可以直接锁屏一样。
默认情况下,屏幕保护程序,是在电脑一段时间没有操作之后,默认触发的,比如 20 分钟。
如果能够也通过快捷键自定义触发,效果上来说,就很像锁屏了。
2 在重新进入桌面时,需要输入锁屏密码。
从安全角度来说,只要重新进入需要锁屏密码,才是真正的锁屏啊。这个的处理就更简单了,如上图,屏幕保护自带了 在恢复时显示登录屏幕
这个功能。
触发方式
可以看到,最主要的问题就是触发方式,这个其实很好解决。
方案1 winxcorners
vhanla/winxcorners: Hot corners for Windows 10
WinXcorners - 免费 Win10 仿 Mac 屏幕触发角功能 (鼠标移到桌面四角执行快捷操作) - 异次元软件下载
MAC 上有一个触发角的功能,当鼠标移动到屏幕的四个角上时,可以触发一些自定义操作,比如锁屏。
winxcorners 可以在 Windows 上实现这个功能。安装之后可以看到,其自带了 Screen Saver
(屏幕保护)的触发功能。
方案2 AutoHotKey
使用 AutoHotKey 可以自定义快捷键触发指令,这个更像是锁屏了,甚至,你就可以把屏幕保护程序的快捷键设置为 Win+L
。
#L:: ; Win+L
SendMessage, 0x0112, 0xF140, 0,, Program Manager ; 0x0112 是 WM_SYSCOMMAND, 而 0xF140 是 SC_SCREENSAVE.
return
这里使用 SendMessage 向系统发送启动屏幕保护程序的指令。
查资料的时候,还发现一个工具,可以实现一些有趣的功能。
NirCmd - Windows command line tool
如果使用 AutoHotKey + NirCmd,也可以实现上面的效果。
#L:: ; Win+L
Run, ./nircmd-x64/nircmd.exe screensaver
return
其中,./nircmd-x64/nircmd.exe
是 nircmd.exe 程序相对于 .ahk
脚本文件的相对路径,screensaver
是 nircmd.exe 的参数。
当然,就启动屏幕保护这个功能来说,SendMessage 就够了。
遗留问题
完成了上面的设置,虽然效果上和锁屏很像了,但本质上还是屏幕保护,目前看来会一直亮屏。
设置了关闭显示器的时间也无效。
屏幕保护程序
完成了以上的设置,如果还使用 Windows 自带的几个预设屏幕保护程序,就不开心了。
这里推荐两个屏幕保护程序:
Aerial
Release Beta 0.5.4 · OrangeJedi/Aerial
可以在屏幕保护界面播放视频,有默认的视频源,也可以自定义视频。
PS: 这个程序,设置视频缓存目录到其它磁盘,好像会出 BUG。
Wallpaper Engine
Wallpaper Engine:Windows 系统上的动画壁纸
使用 Wallpaper Engine 设置屏幕保护程序 | Wallpaper Engine - 故障排除和常见问题解答
Windows 锁屏上的 Wallpaper Engine | Wallpaper Engine - 故障排除和常见问题解答
其它内容
wmhilton/lock-screen: An invisible screensaver / lock screen for Windows 7+
win10动态桌面、锁屏壁纸 - 知乎