You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 21:09:53