2013-03-31 1 views
1

개별 파일이 들어있는 프로그램에서 타이머를 어떻게 사용합니까? 여기 내 예 :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

합니다. 스크립트 3, 광고해야합니다. d'Message :'레이블 앞에'return'을 추가하십시오. 스크립트 3을 시작하면 스크립트 실행이 끝나지 않으므로 스크립트가 끝까지 실행됩니다. –

답변

1

두 개의 링크를 읽어야합니다.

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

당신이 파일을 #include를

는 내용이 단순히 정확히 그 위치에서 주요 스크립트에 삽입됩니다. 스크립트가 시작되면 자동으로 섹션을 실행

global variable 

Hello(){ 
    MsgBox, Messsage1 
} 

Timer(){ 
    SetTimer, Message, 1000 
} 

Message: 
    MsgBox, Messsage2 
    SetTimer, Message, Off 
    return 

Timer() 
Hello() 
Exit 

즉시 실행 : 그래서 script1이처럼 보이는 http://www.autohotkey.com/docs/Scripts.htm#auto

그래서 모든 것을 처음으로 돌아 가기까지 실행 가 (기능이 생략된다). 그게 전부가 왜 "Message2 '쇼는 즉시"Message1 "는 표시되지 않습니다

솔루션 :. 당신이 포함 파일 내의 서브 루틴 레이블이해야하는 경우

, 다음 스크립트의 맨 아래에있는 #include의를 둘 수 있었다 , 자동 실행 섹션 후 :. 그러나

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

, 물론 당신이 게시물에 언급 된 결과를 이해하지 않는 한이 정확한 이유를 들어, 사용법 #include 파일 내에서 서브 루틴 라벨을 넣어 좋은 방법이 아닙니다

+0

답변 해 주셔서 감사합니다. 정말 도움이됩니다. – Amadare42

+0

'그렇지만 정확한 이유 때문에 #include 파일에 서브 루틴 레이블을 넣는 것은 좋지 않습니다. '바로 AHK가 레이블 대신 SetTimer에 함수를 전달해야하는 이유입니다. – Synetech