【问题标题】:autohotkey loop through txt and send each lineautohotkey 循环遍历 txt 并发送每一行
【发布时间】:2014-04-15 19:37:06
【问题描述】:

我正在尝试遍历 VarX 中的列表并发送请求的击键,直到列表完成。现在它似乎混乱起来并且没有按顺序正确运行命令。关于我有什么错误的任何想法?它应该像这样运行:

ctrl f
48306237
enter
tab tab tab tab enter
shift space
ctrl -

然后用下一个数字重复...

^!G::

VarX=

(
48306237
48306642
48303423
48303612
48303797
)

loop, parse, VarX, `n,`r

{

Send, ^f
Send, %VarX%
Send, {enter}
Send, {tab}{tab}{tab}{tab}{enter}
Send, +{space}
Send, ^-
return

}

return

【问题讨论】:

    标签: loops autohotkey


    【解决方案1】:

    首先,你不想对结果“做点什么”吗?例如等着看它是否找到了什么,然后在你之后继续,例如按了一个键?

    此外,如果您想查看文本中是否包含字符串,为什么不使用:

     If YourTextVariable contains %YourStringNumber%
         MsgBox, Found %YourStringNumber% in the text
    

    如果您需要使用内部“查找”功能,那么我建议使用 AHK Spy 查找编辑对象 ID 和 [查找] 按钮 ID,并使用 ControlSend 发送搜索条件和 ControlSend 到“按"[查找] 按钮。

    【讨论】:

      【解决方案2】:
      • 如果您告诉我们您正在使用什么程序,我们可能会推荐更好的技术来使用,包括ControlGetText/ControlSetText/AccViewer(MSAA:Microsoft Active Accessibility)/COM(组件对象模型)。
      • 对于我只能使用Send 的程序,作为不得已的方法,我经常使用大量睡眠,和/或使用SetKeyDelay 来增加按键之间的停顿。此外,我会观察前 10 或 20 次迭代,以确保按键功能正常。
      • 如果原始窗口不再处于活动状态,我还会采取安全措施,例如使用 IfWinActive 停止脚本,否则如果弹出随机窗口,它将接收按键。
      • 同样在这种情况下,数据是数字,所以没关系,但我仍会使用Send {Raw}%VarX% 发送文本以防万一, 对于被Send 特殊处理的字符,例如 +^#!{}。
      • 目前您的循环中有 Return,这将只允许进行一次迭代,您可能出于诊断原因临时执行此操作,但我应该向其他人指出这一点。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-06-29
        • 2021-12-09
        • 2017-09-08
        • 2015-06-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多