有關於迴圈規則問題。 (While)
本帖最后由 We! 于 2009-10-22 15:24 编辑Dim $interval = 500 ;;;座標顯示,時間間隔
Dim $isLoop = 0
HotKeySet("{ESC}", "Terminate") ;;;按{ESC}可以中斷這個腳本
HotKeySet("{F11}" , "StartClick") ;;;按(F11)開始這個腳本
HotKeySet("{Pause}" , "EndClick") ;;;按(Pause)停止這個腳本
Func Terminate() ;;;按{ESC}可以中斷這個腳本
Exit 0
EndFunc
Func StartClick()
$isLoop = 1
While $isLoop
$xy = MouseGetPos()
Sleep($interval)
ToolTip("X座標[ "& $xy& " ] , &" ]")
Sleep($interval)
WEnd
EndFunc
Func EndClick()
$isLoop = 0
EndFunc請前輩們幫看一下,上面的代碼問題在那裡...
沒有錯誤訊息,他一開啟就自動結束,完全不知問題點在那裡。 你把 while 放在 func 裡面,當然會直接結束了 While...Wend
如果運算式成立,則會將下方的陳述式從上方到 WEnd 依序執行,這迴圈會一直執行到運算式不成立為止。抱歉! 小弟有點看不太懂,能否再煩請前輩解釋一下。
是 Func 不能包 While 這個語法嗎?
那如果小弟需要一直顯示於 ToolTip 內,用什麼語法會來的好一點。 这样就可以了Dim $interval = 500 ;;;座標顯示,時間間隔
Dim $isLoop = 0
HotKeySet("{ESC}", "Terminate") ;;;按{ESC}可以中斷這個腳本
HotKeySet("{F11}" , "StartClick") ;;;按(F11)開始這個腳本
HotKeySet("{Pause}" , "EndClick") ;;;按(Pause)停止這個腳本
While 1
If $isLoop Then
$xy = MouseGetPos()
Sleep($interval)
ToolTip("X座標[ "& $xy& " ] , &" ]")
Sleep($interval)
EndIf
WEnd
Func Terminate() ;;;按{ESC}可以中斷這個腳本
Exit 0
EndFunc
Func StartClick()
$isLoop = 1
EndFunc
Func EndClick()
$isLoop = 0
EndFunc
嗯! 了解...
小弟在去看一下語法說明,謝謝唷 XD 本帖最后由 We! 于 2009-10-22 12:02 编辑
抱歉再請教一下,用什麼語法能對"迴圈"的這個動作,設定出較好的開、關設定。
While 1 "1 的數值能否設成,類似變數 --- $1、$2 ... 。" 当然可以,不过你总是需要一个循环等待热键输入的啊,否则程序就退出了 本帖最后由 We! 于 2009-10-22 14:22 编辑
Dim $interval = 500 ;;;座標顯示,時間間隔
Dim $isLoop = 0
Dim $xy = MouseGetPos()
HotKeySet("{ESC}", "Terminate") ;;;按{ESC}可以中斷這個腳本
HotKeySet("{F11}" , "StartClick") ;;;按(F11)開始這個腳本
HotKeySet("{Pause}" , "EndClick") ;;;按(Pause)停止這個腳本
While 1
Sleep($interval)
ToolTip("按ESC離開、F11開啟、Pause停止。", 0, 0)
Sleep($interval)
WEnd
While $isLoop
Sleep($interval)
ToolTip("X座標[ "& $xy& " ] , &" ]")
Sleep($interval)
WEnd
Func Terminate() ;;;按{ESC}可以中斷這個腳本
Exit 0
EndFunc
Func StartClick()
$isLoop = 1
EndFunc
Func EndClick()
$isLoop = 0
EndFunc嗯! 我先有弄一個迴圈,但是! F11 還是無法開啟...
這部份規則陳述還是有點弄不太懂,還煩請前輩幫解釋一下。 建議去參考Event 模式,不過稍微容易陷入「停不住」的鳥現象...
也可參考某篇教讀內存的文,他剛好用到三個熱鍵,達到執行、暫停、退出...
(剛查了一下,弄丟收藏,不然就能直接引給你) 你既然需要一个永循环,就用while 1,再用$isLoop决定动作
用while $isLoop的话一旦不击中就永远不会再进入了Dim $interval = 500 ;;;座標顯示,時間間隔
Dim $isLoop = 0
Dim $xy = MouseGetPos()
HotKeySet("{ESC}", "Terminate") ;;;按{ESC}可以中斷這個腳本
HotKeySet("{F11}" , "StartClick") ;;;按(F11)開始這個腳本
HotKeySet("{Pause}" , "EndClick") ;;;按(Pause)停止這個腳本
While 1
Sleep($interval)
If $isLoop Then
ToolTip("X座標[ "& $xy& " ] , &" ]")
Else
ToolTip("按ESC離開、F11開啟、Pause停止。")
EndIf
Sleep($interval)
WEnd
Func Terminate() ;;;按{ESC}可以中斷這個腳本
Exit 0
EndFunc
Func StartClick()
$isLoop = 1
EndFunc
Func EndClick()
$isLoop = 0
EndFunc Dim $interval = 500 ;;;座標顯示,時間間隔
Dim $isLoop = 0
Dim $top = 1
Dim $xy = MouseGetPos()
HotKeySet("{ESC}", "Terminate") ;;;按{ESC}可以中斷這個腳本
HotKeySet("{F11}" , "StartClick") ;;;按(F11)開始這個腳本
HotKeySet("{Pause}" , "EndClick") ;;;按(Pause)停止這個腳本
While $top
If $top Then
Sleep($interval)
ToolTip("按ESC離開、F11開啟、Pause停止。", 0, 0)
Sleep($interval)
EndIf
WEnd
Func StartClick()
$isLoop = 1
$top = 0
While $isLoop
Sleep($interval)
ToolTip("X座標[ "& $xy& " ] , &" ]")
Sleep($interval)
WEnd
EndFunc
Func Terminate() ;;;按{ESC}可以中斷這個腳本
Exit 0
EndFunc
;Func StartClick()
; $isLoop = 1
;EndFunc
Func EndClick()
$isLoop = 0
$top = 1
EndFunc小弟目前這樣寫,開、關的部份都沒問題,不過顯示座標的時候會卡住! 無法更新。 LZ你的代码错误太多了,实在难以一一指出,你到底需要达到什么样的目的?我前面的代码还不能满足要求吗? 我需要對於"迴圈"的這個動作,設定能精準的 開、關 設定。 不知道这样写你可以理解吗?Dim $interval = 500 ;;;座標顯示,時間間隔
Dim $start = 0, $continue = 1
HotKeySet("{ESC}", "Terminate") ;;;按{ESC}可以中斷這個腳本
HotKeySet("{F11}" , "StartClick") ;;;按(F11)開始這個腳本
HotKeySet("{Pause}" , "EndClick") ;;;按(Pause)停止這個腳本
While $continue
Sleep($interval)
If $start Then
$xy = MouseGetPos()
ToolTip("X座標[ "& $xy& " ] , &" ]")
Else
ToolTip("按ESC離開、F11開啟、Pause停止。")
EndIf
Sleep($interval)
WEnd
Func Terminate() ;;;按{ESC}可以中斷這個腳本
$continue = 0
EndFunc
Func StartClick()
$start = 1
EndFunc
Func EndClick()
$start = 0
EndFunc 嗯! IF 的部份我會再看看的,謝謝指教 :)
页:
[1]