1

如何在包含单独文件的程序中使用计时器?这是我的例子:

脚本1

#include Script2.ahk
#include Script3.ahk
Timer() 
Hello() 
Exit

脚本2

global variable

Hello(){
    MsgBox, Messsage1
}

脚本3

Timer(){
    SetTimer, Message, 1000
}   

Message:
    MsgBox, Messsage2
    SetTimer, Message, Off
    return

该程序将立即显示消息框“Message2”并关闭。但我想在开始后一秒得到“Message1”和“Message2”。这可以做到吗?

4

1 回答 1

1

您需要阅读两个链接。

http://www.autohotkey.com/docs/commands/_Include.htm

当您#include 文件时,内容只是插入到主脚本中的那个位置。所以你的 Script1 看起来像:

global variable

Hello(){
    MsgBox, Messsage1
}

Timer(){
    SetTimer, Message, 1000
}   

Message:
    MsgBox, Messsage2
    SetTimer, Message, Off
    return

Timer() 
Hello() 
Exit

当脚本启动时,自动执行部分立即运行: http ://www.autohotkey.com/docs/Scripts.htm#auto

因此,直到第一次返回的所有内容都运行(跳过函数)。这就是“Message2”立即显示而“Message1”从未显示的原因。

解决方案:

如果必须在包含文件中包含子例程标签,则可以将#includes 放在脚本底部的 autoexec 部分之后:

Timer() 
Hello() 
Exit
#include Script2.ahk
#include Script3.ahk

但是,出于这个确切原因,将子例程标签放在#include 文件中并不是一个好习惯。当然,除非您了解本文中提到的后果。

于 2013-04-01T15:09:37.217 回答