Windows锁定后自动执行特定任务

需求:在锁定我的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,则需要勾选最后一个,因为其依赖于网络可用,否则可以不勾。

发表评论