找回密码
 加入
搜索
查看: 1363|回复: 14

有關於迴圈規則問題。 (While)

[复制链接]
发表于 2009-10-22 09:28:14 | 显示全部楼层 |阅读模式
本帖最后由 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[0 ]& " ] , [Y座標[ " & $xy[1] &" ]")
    Sleep($interval)
WEnd
EndFunc

Func EndClick()
   $isLoop = 0
EndFunc
請前輩們幫看一下,上面的代碼問題在那裡...

沒有錯誤訊息,他一開啟就自動結束,完全不知問題點在那裡。
发表于 2009-10-22 09:44:17 | 显示全部楼层
你把 while 放在 func 裡面,當然會直接結束了
 楼主| 发表于 2009-10-22 10:20:38 | 显示全部楼层
While...Wend
如果運算式成立,則會將下方的陳述式從上方到 WEnd 依序執行,這迴圈會一直執行到運算式不成立為止。
抱歉! 小弟有點看不太懂,能否再煩請前輩解釋一下。

是 Func 不能包 While 這個語法嗎?

那如果小弟需要一直顯示於 ToolTip 內,用什麼語法會來的好一點。
发表于 2009-10-22 10:47:31 | 显示全部楼层
这样就可以了
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[0 ]& " ] , [Y座標[ " & $xy[1] &" ]")
                Sleep($interval)
        EndIf
WEnd

Func Terminate() ;;;按{ESC}可以中斷這個腳本
        Exit 0
EndFunc

Func StartClick()
        $isLoop = 1
EndFunc

Func EndClick()
   $isLoop = 0
EndFunc
 楼主| 发表于 2009-10-22 11:11:10 | 显示全部楼层
嗯! 了解...

小弟在去看一下語法說明,謝謝唷 XD
 楼主| 发表于 2009-10-22 12:00:54 | 显示全部楼层
本帖最后由 We! 于 2009-10-22 12:02 编辑

抱歉再請教一下,用什麼語法能對"迴圈"的這個動作,設定出較好的開、關設定。

While 1 "1 的數值能否設成,類似變數 --- $1、$2 ... 。"
发表于 2009-10-22 12:20:53 | 显示全部楼层
当然可以,不过你总是需要一个循环等待热键输入的啊,否则程序就退出了
 楼主| 发表于 2009-10-22 13:41:30 | 显示全部楼层
本帖最后由 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[0 ]& " ] , [Y座標[ " & $xy[1] &" ]")
        Sleep($interval)
WEnd

Func Terminate() ;;;按{ESC}可以中斷這個腳本
        Exit 0
EndFunc

Func StartClick()
        $isLoop = 1
EndFunc

Func EndClick()
   $isLoop = 0
EndFunc
嗯! 我先有弄一個迴圈,但是! F11 還是無法開啟...

這部份規則陳述還是有點弄不太懂,還煩請前輩幫解釋一下。
发表于 2009-10-22 14:00:33 | 显示全部楼层
建議去參考Event 模式,不過稍微容易陷入「停不住」的鳥現象...
也可參考某篇教讀內存的文,他剛好用到三個熱鍵,達到執行、暫停、退出...
(剛查了一下,弄丟收藏,不然就能直接引給你)
发表于 2009-10-22 14:18:21 | 显示全部楼层
你既然需要一个永循环,就用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[0 ]& " ] , [Y座標[ " & $xy[1] &" ]")
        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
 楼主| 发表于 2009-10-22 14:33:50 | 显示全部楼层
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[0 ]& " ] , [Y座標[ " & $xy[1] &" ]")
        Sleep($interval)
        WEnd
EndFunc

Func Terminate() ;;;按{ESC}可以中斷這個腳本
        Exit 0
EndFunc

;Func StartClick()
;        $isLoop = 1
;EndFunc


Func EndClick()
   $isLoop = 0
   $top = 1
EndFunc
小弟目前這樣寫,開、關的部份都沒問題,不過顯示座標的時候會卡住! 無法更新。
发表于 2009-10-22 14:50:35 | 显示全部楼层
LZ你的代码错误太多了,实在难以一一指出,你到底需要达到什么样的目的?我前面的代码还不能满足要求吗?
 楼主| 发表于 2009-10-22 14:52:45 | 显示全部楼层
我需要對於"迴圈"的這個動作,設定能精準的 開、關 設定。
发表于 2009-10-22 15:15:46 | 显示全部楼层
不知道这样写你可以理解吗?
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[0 ]& " ] , [Y座標[ " & $xy[1] &" ]")
        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

评分

参与人数 1威望 +1 金钱 +100 贡献 +9 收起 理由
kn007 + 1 + 100 + 9 XD精神可嘉,加分鼓励,希望以后能继续发扬 ...

查看全部评分

 楼主| 发表于 2009-10-22 15:24:04 | 显示全部楼层
嗯! IF 的部份我會再看看的,謝謝指教 :)
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-5-24 01:01 , Processed in 0.079535 second(s), 21 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表