※ 引述《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從頭到尾都沒執行