看板 EzHotKey 關於我們 聯絡資訊
※ 引述《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
fossil313: 還有我第一段推文說錯了 不要理它 02/03 01:20
lan661203: 謝謝大大分晰的真清楚,我要消化理解一下 02/03 19:35
lan661203: 另一問題,假如有辦法執行到wawa,但loop卻停止了 02/03 19:44
lan661203: 是不是要改變程式碼才有辦法解決 02/03 19:45
fossil313: 可能要先問問甚麼狀況讓你覺得loop停了 02/03 20:04