找回密码
 加入
搜索
查看: 4176|回复: 6

[AU3基础] 已解决(有关adlibregister函数的用法),多谢fuldho和user3000

  [复制链接]
发表于 2014-5-8 21:03:54 | 显示全部楼层 |阅读模式
本帖最后由 levinfish 于 2014-5-9 20:38 编辑

利用AdlibRegister函数,在每天特定的时间执行一段代码(代码是主程序的子函数),简化的程序如下:
AdlibRegister('aaa',1000)
While 1
        Sleep(1000)
WEnd

Func aaa()
        If @HOUR & ':' & @MIN  = '21:00' Then
              msgbox(0,'','t')
        EndIf  
EndFunc
一到规定的时间,就不停的执行这个程序段,一直执行一分钟。
如果使用 AdlibUnRegister函数, 在程序执行一次后反注册,则程序段只执行一次,但如果程序几天都不退出,则第二天到设定的时间以后,就不再执行这个程序段
AdlibRegister('aaa',1000)
While 1
        Sleep(1000)
WEnd

Func aaa()
        If @HOUR & ':' & @MIN  = '21:00' Then
              msgbox(0,'','t')
              AdlibUnRegister('aaa')
        EndIf  
EndFunc

请教一下,如何能够让程序在每天的特定时间都能执行,切执行一次。(由于AdlibRegister执行的仅仅是主程序的一个子程序,电脑自带的计划任务貌似执行起来比较麻烦)
发表于 2014-5-8 22:39:03 | 显示全部楼层
回复 1# levinfish


  函数完成所有工作后延迟个分把钟吧!
 楼主| 发表于 2014-5-8 23:48:34 | 显示全部楼层
回复 2# user3000
函数延时以后整个主程序也要跟着暂停,貌似也不行。
发表于 2014-5-9 07:09:08 | 显示全部楼层
本帖最后由 fuldho 于 2014-5-9 07:57 编辑

AdlibRegister('aaa',1000)
While 1
        Sleep(1000)
WEnd

Func aaa()
        If @HOUR & ':' & @MIN  = '20:59' Then
               Sleep(1000)
              msgbox(0,'','t')
        EndIf  
EndFunc
发表于 2014-5-9 07:24:26 | 显示全部楼层
本帖最后由 user3000 于 2014-5-9 07:25 编辑

回复 3# levinfish
那可以这样,在主循环里作判断,时间到了才注册函数。函数运行一次又自反注册。
While 1
If@hour=21 and …then
Adlibregister…
Wend
发表于 2014-5-9 08:03:49 | 显示全部楼层
回复 5# user3000

等待'21:00' 跳过再运行是可行的
 楼主| 发表于 2014-5-9 20:37:19 | 显示全部楼层
刚下班,我试一下,fuldho和user3000的方法都可行。
因为我的主程序里面用的是下面的循环,所以只能用fuldho给出的方法。
While 1                       
        $msg = GUIGetMsg()
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-5-5 12:18 , Processed in 0.080236 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表