Re: [AHK-] 循环问题

楼主: fossil313 (阵雨)   2015-02-03 01:17:10
※ 引述《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从头到尾都没执行
楼主: fossil313 (阵雨)   2015-02-03 01:20:00
还有我第一段推文说错了 不要理它
作者: lan661203 (庙小狼)   2015-02-03 19:35:00
谢谢大大分晰的真清楚,我要消化理解一下另一问题,假如有办法执行到wawa,但loop却停止了是不是要改变程式码才有办法解决
楼主: fossil313 (阵雨)   2015-02-03 20:04:00
可能要先问问什么状况让你觉得loop停了

Links booklink

Contact Us: admin [ a t ] ucptt.com