※ 引述《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从头到尾都没执行