作者fossil313 (陣雨)
看板EzHotKey
標題Re: [AHK-] 迴圈問題
時間Tue Feb 3 01:17:10 2015
※ 引述《lan661203 (廟小狼)》之銘言:
: my_switch1:=0
: loop{
: If ((A_Hour = 11) && (A_Min = 22) && (A_Sec = 00))
: {
: my_switch1 := 1
: msgbox 1
: }
: else If ((A_Hour = 11) && (A_Min = 23) && (A_Sec = 30))
: {
: my_switch1 := 0
: msgbox 2
: }
: else If (my_switch1=1)
: {
: SetTimer, wawa, 6000
: }
: else if(my_switch1=0)
: {
: SetTimer, wawa, Off
: }
: }
: wawa:
: If (my_switch1=1)
: {
: msgbox 3
: }
: return
: 這裡的wawa 怎麼不會執行 是擺放的位置不對嗎
前面推文推到都不知道自己在說什麼了 XD
直接依時間序排出所有執行狀況
~ 11:21:59
目前my_switch1 = 0 且時間不為11:22:00或11:23:30
因此else if(my_switch1=0)成立
所以把timer關掉
11:22:00
目前時間符合
因此If ((A_Hour = 11) && (A_Min = 22) && (A_Sec = 00))成立
所以my_switch1的值變為1 並執行msgbox, 1
11:22:01 ~ 11:23:29
目前my_switch1 = 1 且時間不為11:22:00或11:23:30
因此else If (my_switch1=1)成立
所以將timer設為6000ms後執行
注意這裡由於一次loop執行的時間小於6000ms
所以timer一直不斷被設為6000ms後執行 以致一直看不到msgbox, 3執行
11:23:30
目前時間符合
因此else If ((A_Hour = 11) && (A_Min = 23) && (A_Sec = 30))成立
所以my_switch1的值變為0 並執行msgbox, 2
11:23:31 ~
目前my_switch1 = 0 且時間不為11:22:00或11:23:30
因此else If (my_switch1=0)成立
所以將timer關掉
還記得前面timer被設定在6000ms後執行沒錯吧?
但由於從11:23:30時my_switch1改為0之後
到11:23:31時關掉timer之間的時間小於6000ms
所以很遺憾的是timer在執行前就被關掉了
簡單來說 就是上面的程式碼不斷將timer的時間設定在6秒後執行
之後又在6秒內關掉timer 所以導致timer從頭到尾都沒執行
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.32.49.118
※ 文章網址: https://webptt.com/m.aspx?n=bbs/EzHotKey/M.1422897433.A.76A.html
1F:→ fossil313: 還有我第一段推文說錯了 不要理它 02/03 01:20
2F:推 lan661203: 謝謝大大分晰的真清楚,我要消化理解一下 02/03 19:35
3F:→ lan661203: 另一問題,假如有辦法執行到wawa,但loop卻停止了 02/03 19:44
4F:→ lan661203: 是不是要改變程式碼才有辦法解決 02/03 19:45
5F:→ fossil313: 可能要先問問甚麼狀況讓你覺得loop停了 02/03 20:04