Re: [AHK-] 迴圈問題

看板EzHotKey作者 (陣雨)時間11年前 (2015/02/03 01:17), 編輯推噓1(104)
留言5則, 2人參與, 最新討論串2/4 (看更多)
※ 引述《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://www.ptt.cc/bbs/EzHotKey/M.1422897433.A.76A.html

02/03 01:20, , 1F
還有我第一段推文說錯了 不要理它
02/03 01:20, 1F

02/03 19:35, , 2F
謝謝大大分晰的真清楚,我要消化理解一下
02/03 19:35, 2F

02/03 19:44, , 3F
另一問題,假如有辦法執行到wawa,但loop卻停止了
02/03 19:44, 3F

02/03 19:45, , 4F
是不是要改變程式碼才有辦法解決
02/03 19:45, 4F

02/03 20:04, , 5F
可能要先問問甚麼狀況讓你覺得loop停了
02/03 20:04, 5F
文章代碼(AID): #1Kpx4PTg (EzHotKey)
文章代碼(AID): #1Kpx4PTg (EzHotKey)