作者fossil313 (阵雨)
看板EzHotKey
标题Re: [AHK-] 回圈问题
时间Tue Feb 3 01:17:10 2015
※ 引述《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://webptt.com/cn.aspx?n=bbs/EzHotKey/M.1422897433.A.76A.html
1F:→ fossil313: 还有我第一段推文说错了 不要理它 02/03 01:20
2F:推 lan661203: 谢谢大大分晰的真清楚,我要消化理解一下 02/03 19:35
3F:→ lan661203: 另一问题,假如有办法执行到wawa,但loop却停止了 02/03 19:44
4F:→ lan661203: 是不是要改变程式码才有办法解决 02/03 19:45
5F:→ fossil313: 可能要先问问甚麽状况让你觉得loop停了 02/03 20:04