需求:在锁定我的PC(通常通过Win键+L的方式)后
1、降低屏幕亮度至0(主要目的是在半夜,防止咪咪误碰唤醒我的PC,屏幕太亮,把我晃醒,当然也有低碳节电的作用)
2、立刻关闭显示器
3、可以从我的安卓手机,或者公司PC访问我家里的PC。
Talk is cheap, show you my code.
实现:
1:powershell ((Get-WmiObject -Namespace root/WMI -Class WmiMonitorBrightnessMethods).WmiSetBrightness(1,0))
2:powershell (Add-Type ‘[DllImport(\”user32.dll\”)]^public static extern int SendMessage(int hWnd, int hMsg, int wParam, int lParam);’ -Name a -Pas)::SendMessage(-1,0×0112,0xF170,2)
(使用了Windows的广播消息,参考地址:https://gallery.technet.microsoft.com/scriptcenter/Turn-off-screen-4d173e0a)
3:通过frp完成(前提是我有一个拥有固定IP地址的远程服务器),frp的配置部分省略,直接使用了。如果想要知道的,可以自行搜索相关用法,在有固定IP服务器的情况下,使用起来也是比较简单的。
最终代码(我保存在E:\Tools\frp_0.22.0_windows_amd64\lock.bat):
taskkill -f -im "frpc.exe" rem 下面两行根据实际文件保存位置决定 E: cd E:\Tools\frp_0.22.0_windows_amd64 start frp.bat powershell ((Get-WmiObject -Namespace root/WMI -Class WmiMonitorBrightnessMethods).WmiSetBrightness(1,0)) rundll32.exe user32.dll LockWorkStation powershell (Add-Type '[DllImport(\"user32.dll\")]^public static extern int SendMessage(int hWnd, int hMsg, int wParam, int lParam);' -Name a -Pas)::SendMessage(-1,0x0112,0xF170,2)
下一个关键点,如何在锁定Windows时自动执行上面这个文件。
Talk is cheap, show you my images.
按Win键打开开始菜单之后,直接输入“任务”,正常会自动显示下图,按回车直接可以进入程序(如果没有,或者Windows版本不同,也可以在Windows附件中找到该程序),完整流程如下:
随便给任务起个名字
先在开始任务中选择工作站锁定时
找到上面保存文件lock.bat的位置
如果需要使用frp,则需要勾选最后一个,因为其依赖于网络可用,否则可以不勾。