Autohotkey 如果WinExist使用变量和正则表达式
免责声明:是的,我读过另一篇与我类似的StackOverflow文章,但没有一篇文章在标题上使用RegEx,我也找不到解决方案 我需要打开一个如下的窗口:Autohotkey 如果WinExist使用变量和正则表达式,autohotkey,Autohotkey,免责声明:是的,我读过另一篇与我类似的StackOverflow文章,但没有一篇文章在标题上使用RegEx,我也找不到解决方案 我需要打开一个如下的窗口: PlayerName-游戏版本1.2.15 PlayerName可以是任何东西(如Ayrawe、john或flyingcar82) 我可以从某个函数getName()中获取玩家名称,该函数与我的问题及其正常工作无关 playerName=getName() 然后我尝试通过使用playerName变量和正则表达式来打开正确的窗口,以匹配游戏的任
PlayerName-游戏版本1.2.15
PlayerName可以是任何东西(如Ayrawe、john或flyingcar82)
我可以从某个函数getName()
中获取玩家名称,该函数与我的问题及其正常工作无关
playerName=getName()
然后我尝试通过使用playerName
变量和正则表达式来打开正确的窗口,以匹配游戏的任何可能版本
SetTitleMatchMode RegEx
playerName = getName()
IfWinExist, playerName - Game Version.*
{
WinActivate
Sleep, 500
WinMaximize
}
但它试图用“playerName”来匹配标题,而不是它的价值。我还尝试了%playerName%
,但它也不起作用
我错过了什么 这里有两个问题,它们来自于错误地使用遗留语法 问题1:
playerName=getName()
您使用的是不推荐的传统方式,将文字文本分配给变量()。
现在变量
playerName
保存文本“getName()”
应用于将表达式的结果赋给变量:
playerName:=getName()
问题2:不推荐使用的旧命令的用法。
它本身并不是一个问题,但它与错误使用遗留语法相结合。在遗留语句中,您确实可以通过执行
%playerName%
来引用变量,如果您修复了问题1,这将起作用。但是,让我们用正确的方式,使用更新的功能:
if (WinExist(playerName " - Game Version.*")) ;concatenate the contents of a variable and string
{
WinActivate
Sleep, 500
WinMaximize
}
总的来说,我建议尝试摆脱遗留语法。这里有一个很好的文档页面,可以帮助您了解这些差异: