2011-10-06 152 views
0

我的autohotkey脚本中的循环只能运行一次。谁能告诉我为什么?谢谢Autohotkey循环不起作用

Loop, 8 
{ 
    WinActivate, NDTr 
    ControlClick, Button3 ;Select Batch, enter info, start collecting data 
    WinWait, Batch Readings 
    ControlClick, Edit1 
    Send {BS}+{BS}+{BS}+{BS}+{BS}+{BS} 
    Send 1 
    ControlClick, Edit2 
    Send {BS}+{BS}+{BS}+{BS}+{BS}+{BS} 
    Send 15 

    if A_Index = 4 
    { 
    Sleep, 20000 
    } 
    else if A_Index = 7 
    { 
    Sleep, 20000 
    } 
    else if A_Index = 1 
    { 
    Sleep, 3000 
    } 
    else 
    { 
    Sleep, 15000 
    } 

    ControlClick, Button1 
    Sleep, 15000 
} 
+1

是否有可能您只是不够等待?那些睡眠值似乎有点长... 或者,您的WinWait在通过循环的第二次运行时是否正常工作?另一个窗口是否在偷窃焦点,以便将其他命令发送到错误的地方? – andrewdotnich

回答

1

WinWait看起来像一个可能的罪魁祸首像anthv123说。仔细检查你的窗口标题,并确保它符合你期望的TitleMatchMode

常见的调试做法包括在问题代码中添加不同的ToolTip。例如,在WinWait行的上方和下方,文本“之前”和“之后”的工具提示会告诉您它是否无限期地停留在该部分(如果它从不在“之后”)。

睡3-20秒也不会帮助你的耐心。

1

请尝试使用它来诊断问题。如果“批量读数”花费的时间超过5秒,您会收到一条错误,让您知道并且循环继续。

WinWait, Batch Readings,,5 
if (errorLevel = 1) 
    Msgbox % "Batch Readings timed out"