使用的一个免费梯子,每10分钟会断开,我想要实现的功能是,自动重新连接。
之前买过一个付费的梯子,用了三四年,确实要省心一些,但毛病也不少,最近到期后,暂时还没打算好再购买哪个梯子。
脚本
编写的脚本很简单,就是通过一个无限循环,每10分钟(多一点)检查梯子窗口是否存在,存在则切换到该窗口,不存在则启动程序,然后向按钮发送一个空格(相当于按下按钮)。
具体代码如下(为避免误解,把那个梯子名称用XX代替):
Code: Select all
Loop ; 无限循环, 直到遇到内部的 "break" 或 "return".
{
IfWinExist XXVPN
{
WinActivate
}
else
{
Run C:\Program Files\XX VPN\xxvpn.exe
WinWait XX VPN
WinActivate
}
ControlSend, 连接, {Space}, XXVPN
Sleep 609000 ; 暂停 609 秒.
}
这么一个简单的脚本,却遇到过不少问题:
1、文件编码问题:挺奇怪的,在Win10下需要使用UTF-8编码,Win7下则需要ANSI编码。
2、切换窗口之后没反应:以为是发送按键没起作用,试过别的很多做法,比如
Send {Enter}
或者先聚焦到按钮再按键:
ControlFocus 连接
Send {Space}
或者使用鼠标点击:
Click, 154 115
或者
SendEvent {Click 154 144}
后来才搞明白,是因为一个很低级的错误,即运行没有使用管理员权限。
3、前两个问题都解决了,脚本基本上也能够实现想要的功能,但后来遇到一个莫名其妙的问题,到现在仍是一筹莫展——脚本运行到切换窗口,并按下按钮时,经常会莫名其妙地关闭一些窗口。
就目前所知,被关闭的窗口包括:Office三件套(Word,Excel、Powerpoint),一些浏览器(但好像Opera没问题),微信的打开链接的窗口或者是独立的订阅号窗口,360手机助手。被关闭时窗口的状态可能在前台,也可能在后台,或者处于最小化状态。换用鼠标点击按钮的做法也不行。
求助
上面描述了遇到的问题,有点啰嗦,不知道是否表达清楚了。
我希望得到的帮助包括两个层面:
1、解决窗口莫名其妙被关闭的问题,当然,如果能够知道原因就更好了。
2、如果有可能,提供更好的解决问题的思路,或者对现有代码提出优化建议。比如现在的代码,每10分钟都要切换到那个梯子窗口,如果正在用电脑干别的工作,也会是一个有点讨厌的干扰。
希望有大佬能够不吝赐教,感激