使用AutoHotkey在Connectify无设备连接时自动远程关机
Connectify是一款很好用的的软件,可以把笔记本模拟成一台无线路由器,这样我的手机就可以使用它建立的wifi共享上网了。但是对于喜欢晚上睡前玩一会儿手机的人有这么个问题,就是睡前需要起床去把电脑关机,在严冬季节这样的缺陷就更让人无法忍受了。当然也可以采用定时关机的方法,但总是不太灵活自由。
我在网上搜搜了一下,有利用QQ来实现远程关机的,觉得不太方便,还有可以通过远程Web关机的Switch Off,但我使用没有成功。最后还是自己用AutoHotkey实现了,程序在检测到没有设备接入Connectify后自动关机或休眠。
首先下载安装AutoHotkey(选择Unicode版本),运行里面的AutoIt3 Window Spy,点击Connectify的窗口后观察
注意左右红框里的内容,可以利用这个信息来判断Connectify是否有设备接入。图中是无设备时的情况,我用手机连接wifi后会变成(1 Client),因此可以通过判断AutoHotkey捕捉的窗口文本中是否存在(0 Clients)来实现自动远程关机
最初的程序是直接执行关机的,为防止误判,后改为倒计时关机。因为有的电源方案在电脑长时间没有用户输入时会进入待机状态,造成共享网络中断,所以使用了SetThreadExecutionState来阻止电脑待机。第一行加入了关闭显示器节能。
代码:
SendMessage, 0x112, 0xF170, 2,, Program Manager ; 0x112 为 WM_SYSCOMMAND, 0xF170 为 SC_MONITORPOWER. ; 对上面命令的注释: 使用 -1 代替 2 来打开显示器. ; 使用 1 代替 2 来激活显示器的节能模式. ; 此命令用以关闭显示器显示 while 1 { IfWinExist, ,(0 Clients) break ;检测到无设备接入则退出此循环执行后面的关机程序 DllCall("Kernel32\SetThreadExecutionState", "int", 1) ;重置系统空闲计时器,阻止系统进入待机 Sleep, 5000 ;5000ms检测一次connectify设备接入情况 } TimeRemaining = 10 ;等待10s后关机,在此期间可以取消关机,防止误判 Gui, Add, Text, vTxt, 系统将在%TimeRemaining%秒后关机 ;提示文本 Gui, Add, Button, default gButtonOK, 立即执行 ;按下此按钮后执行ButtonOK:后的代码 default表示回车默认按此按钮 Gui, Add, Button, x+10 gButtonCancel, 取消 ;在上一控件右侧即“立即执行”右侧增添“取消”按钮 SetTimer, UpdateTime, 1000 ;创建用于更新关机剩余时间的定时器 Gui, Show ;显示界面 return UpdateTime: ;1s执行一次 TimeRemaining := TimeRemaining-1 GuiControl, ,Txt, 系统将在%TimeRemaining%秒后关机 if(TimeRemaining == 0) ;时间到,执行关机 { SetTimer, ,Off Gui, Destroy DllCall("PowrProf\SetSuspendState", "int", 1, "int", 0, "int", 0) ;休眠 ExitApp } return ButtonOK: SetTimer, ,Off Gui, Destroy DllCall("PowrProf\SetSuspendState", "int", 1, "int", 0, "int", 0) ;休眠 ExitApp GuiClose: ButtonCancel: ExitApp ;Author http://cql.cnblogs.com
我一般习惯用休眠,如果要用关机要将程序中的两处
DllCall("PowrProf\SetSuspendState", "int", 1, "int", 0, "int", 0)
改为
Shutdown, 9
使用:将代码复制在记事本中,保存为文件名后缀为ahk(如connectify.ahk)。运行前要先用设备连接connectify建立的wifi,点击托盘使桌面上显示connectify的窗口,然后双击connectify.ahk运行脚本(也可以设置成快捷键运行),之后当设备断开wifi连接后,ahk脚本就会自动让电脑休眠或关机了。
我的环境为:Windows 7 旗舰版 32位,AutoHotkey 1.1.09.00, Connectify Hotspot 3.7.1.25486
参考:
1.AutoHotkey 0级入门教程:让重复工作一键完成——善用佳软