AutoHotkey:计时器,标签和包含

时间:2013-03-31 16:41:35

标签: timer include autohotkey

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

SCRIPT1

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

SCRIPT2

global variable

Hello(){
    MsgBox, Messsage1
}

Script3

Timer(){
    SetTimer, Message, 1000
}   

Message:
    MsgBox, Messsage2
    SetTimer, Message, Off
    return

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

1 个答案:

答案 0 :(得分: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”从未显示的原因。

解决方案:

如果必须在include文件中包含子例程标签,那么可以在自动执行部分之后将#include放在脚本的底部:

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

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