autohotkey循环文本并发送每一行

时间:2014-04-15 19:37:06

标签: loops autohotkey

我试图遍历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

2 个答案:

答案 0 :(得分:1)

首先,你不想做某事"做某事"结果呢?例如等一下,看看它是否找到了什么,然后继续按了一把钥匙?

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

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

如果你需要使用内部"发现"函数,然后我建议使用AHK间谍查找编辑对象ID和[查找]按钮ID,并使用ControlSend发送搜索条件和ControlSend到"按下" [查找]按钮。

答案 1 :(得分:0)

  • 如果您告诉我们您正在使用的程序,我们可能会建议使用更好的技术,包括ControlGetText / ControlSetText / AccViewer(MSAA:Microsoft Active Accessibility)/ COM(组件对象模型)。
  • 对于我只能使用Send的程序,作为最后的方法,我经常会大量睡眠,和/或使用SetKeyDelay来增加按键之间的暂停。另外,我会观察前10或20次迭代,以确保按键功能正常。
  • 如果原始窗口不再处于活动状态,我还会使用诸如使用IfWinActive之类的安全措施来停止脚本,否则如果弹出一个随机窗口,它将收到按键。
  • 同样在这种情况下,数据是数字的,所以它没问题,但我仍然会使用Send {Raw}%VarX%作为预防措施发送文字, 对于由Send特别处理的+ ^#!{}等字符。
  • 目前你在循环中有Return,只允许进行一次迭代,你可能出于诊断原因临时做了这个,但我应该把它指向别人。