2013-09-27 90 views
0

請在AutoHotkey的執行下面的腳本:Gosub應該如何工作?

#NoEnv ; Recommended for performance and compatibility with future AutoHotkey releases. 
; #Warn ; Enable warnings to assist with detecting common errors. 
SendMode Event ; Recommended for new scripts due to its superior speed and reliability. 
SetWorkingDir %A_ScriptDir% ; Ensures a consistent starting directory. 

#Persistent 

Gosub, Mylabel 
Return 

MsgBox, It worked! 

MyLabel: 
Sleep, 1000 
Return 

我希望它來調用MyLabel,也就是說,等待1秒,然後彈出消息框。

但它沒有。

我在Gosub運作中缺少什麼?

回答

1

您在gosub調用後面的行有return

拿出來,它停止腳本。

像這樣:

(1) Gosub, Mylabel 
; Return 

(2) MsgBox, It worked! 

(3) MyLabel: 
(4) Sleep, 1000 
(5) Return 

基本上,後Gosub行後面的代碼Mylabel開始。 一旦達到return,它會跳回Gosub之後的行。 (1),run(2)之後跳轉到line,跳轉到標籤(3),運行命令(4),運行return(5)你會看到這個消息。之後代碼再次繼續通過(3)處的標籤,再次運行(4),此時返回(5)完全停止腳本。

+0

我還是不明白:如果«一旦它到達'return'就會跳回來,並在'Gosub'»後面繼續行,是不是應該顯示消息框? 'MyLabel'已經執行... –

+0

我編輯它來解釋更清楚發生的事情。 「;」在返回之前它將它標記爲註釋,所以它不會運行。 – 576i

+0

好吧,我會根據你的建議做一些'Gosub'的實驗,然後我會回到這裏接受你的回答:)謝謝! –