求助大佬:一个简单的ahk脚本,总是莫名其妙地关闭别的软件

遇到了问题?请先进行搜索(中文和英文),然后在此提问

Moderators: tmplinshi, arcticir

txwl
Posts: 1
Joined: 29 May 2022, 03:09

求助大佬:一个简单的ahk脚本,总是莫名其妙地关闭别的软件

Post by txwl » 29 May 2022, 04:14

背景及需求
使用的一个免费梯子,每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分钟都要切换到那个梯子窗口,如果正在用电脑干别的工作,也会是一个有点讨厌的干扰。

希望有大佬能够不吝赐教,感激 :salute:

Return to “请求帮助”