
自用锁屏小工具
太长不看版
WindowLockScreen: https://github.com/sanshiliuxiao/WindowLockScreen
自身需求
由于自己的电脑驱动存在一些问题,导致合盖之后,电脑进入休眠状态,开盖之后,屏幕无法正常被点亮,需要强制关机重启,觉得这样挺烦的。就直接将所有情况设置成无动作,保证电脑一直开机,于是乎,就想到之前写过的一个小工具,就顺手重构了一下。
实现原理
WPF 的窗口里面有一个属性叫做 Topmost
,当他设置为 True
时,这个窗口会置于最顶层,那么我将一个透明的、置顶的窗口叠在最上面,那不就实现了我的需求了么。
另外可以用钩子函数去拦截大部分的热键,从而达到锁键盘的作用。不过目前没有拦截正常的输入按键和 Ctrl + Alt + Delete
热键。
前者是不想拦截,觉得没必要,后者是因为这个热键优先级更高,采用钩子函数无法拦截到,就先放弃了。
稍做说明
小工具采用了 Prism.Unity
、 PLnvoke.User32
、Hardcodet.NotifyIcon.Wpf.NetCore
第三方包。 分别实现了 Ioc 容器、隐藏任务窗口(Alt + Tab
)、应用托盘功能。
说是小工具,其实还蛮大的,又不是不能用。或许某位大佬能够帮忙优化,不借助第三方包,全部手动实现。有兴趣可以直接下载源代码查看,虽然没写啥备注,但应该还是比较好懂的吧。
第一次应用启动后,会自动锁屏,右下角出现应用托盘。
主要逻辑:
- 创建
PrismApplication
实例- 创建
Ioc
容器 - 创建
MainWindow
窗口实例
- 创建
MainWindow
窗口实例- 创建应用托盘
- 创建
ScreenLockWindow
实例,并展示- 创建
VerifyPasswordWindow
实例
- 创建
- 开启键盘钩子
- 点击
ScreenLockWindow
右上角- 传入
ScreenLockWindow
实例 给VerifyPasswordWindow
实例 - 展示
VerifyPasswordWindow
实例
- 传入
- 输入密码
- 校验密码
- 关闭
VerifyPasswordWindow
- 关闭
ScreenLockWindow
- 关闭键盘钩子
- 应用托盘
- 重新锁屏或退出。
Google广告
假装这里有广告