AutoHotKey v2字符串比较失效问题求助
问题:AutoHotKey v2字符串比较异常,无法匹配窗口获取的文本
按下F24键后,脚本将鼠标移动到指定坐标,获取下方控件所在窗口的文本并保存为myText(已确认文本内容正确)。但直接将myText与州缩写"GA""FL"比较时,无法进入对应分支;内部定义的变量与缩写对比却能正常生效。修改为else分支后会直接执行其内容,怀疑是比较方式或编码问题。
异常代码示例
F24:: { CoordMode "Mouse" Click 1145,175 MouseGetPos &xpos,&ypos,&OutputVarWin,&OutputVarControl myText := WinGetText(OutputVarWin) if (myText = "GA") { MsgBox ("it's GA") } else if (myState = "FL") { MsgBox ("it's FL") } }
正常对比代码示例
F24:: { stateGA := "GA" stateFL := "FL" CoordMode "Mouse" Click 1145,175 MouseGetPos &xpos,&ypos,&OutputVarWin,&OutputVarControl myText := WinGetText(OutputVarWin) if (stateGA = "GA") { MsgBox ("it's GA") } else if (stateFL = "FL") { MsgBox ("it's FL") } }
排查与解决步骤
- 检查隐藏空白字符:窗口返回的文本常包含不可见的空格、换行或制表符,导致全等匹配失败。在获取
myText后添加MsgBox("[" myText "]"),通过方括号直观查看文本前后是否有多余字符。 - 清理文本首尾空白:使用
Trim()函数处理获取到的文本,修改代码为:myText := Trim(WinGetText(OutputVarWin)) - 修正代码笔误:原异常代码中
else if分支使用了未定义的myState变量,应改为myText = "FL"。 - 编码排查(可选):若上述方法无效,可尝试指定编码读取窗口文本,例如:
不过这种情况较少见,优先处理空白字符和代码笔误。myText := StrGet(WinGetText(OutputVarWin), "UTF-8")
内容的提问来源于stack exchange,提问作者Daniel Diaz
相关产品推荐
相关产品推荐

