_DateAdd 在一个周期运行程序问题(已解决)
本帖最后由 夜猫猫 于 2012-7-10 20:51 编辑郁闷!居然把帖子发到无意义贴里去了
预想效果:使用_DateAdd获得预定时间,当时间到时执行程序,执行完程序后,保持在线等待下次执行.
我使用当前时间跟预定时间比较,匹配则运行程序.不匹配等待
这里有个差不多的.5楼三笑的代码
http://www.autoitx.com/forum.php?mod=viewthread&tid=18089&highlight=%D6%DC%C6%DA
但是使用注册AdlibRegister函数,避免使用 ...Wait(), MsgBox(), InputBox() 等阻断型函数,所以不能使用.
搞一头雾..好象每次获取时间都没法比较...预定时间永远跟当前时间对不上,,求帮忙...谢谢
代码如下:
#include <Date.au3>
$sNewDate = _DateAdd('n', 1, _NowCalc())
$nowdate = _NowCalc()
;MsgBox(4096, "", "1分钟后时间是:" & $sNewDate)
While 1
If $nowdate = $sNewDate Then
MsgBox(0,"","运行程序")
EndIf
Sleep(1000)
WEnd
你这是刚给用现在的时间加1分钟后,马上跟现在的时间比较, 这哪里能相等?
应该在循环里i不断更新'现在的时间'来比较:
#include <Date.au3>
$sNewDate = _DateAdd('n', 1, _NowCalc())
While 1
If $sNewDate = _NowCalc() Then ExitLoop
Sleep(100)
WEnd
MsgBox(0,"时间到","运行程序") 本帖最后由 ashfinal 于 2012-7-10 16:09 编辑
#include <Date.au3>
$sNewDate = _DateAdd('n', 1, _NowCalc())
;MsgBox(4096, "", "1分钟后时间是:" & $sNewDate)
While 1
$nowdate = _NowCalc();原第三行移到这
If $nowdate = $sNewDate Then
MsgBox(0,"","运行程序")
EndIf
Sleep(1000)
WEnd
原例上改一句你就知道错哪了 虽然你指定 $nowdate 为当前时间,实际上并没更新。它指向的是过去的固定时间 本帖最后由 夜猫猫 于 2012-7-10 16:24 编辑
谢谢ashfinal555.....测试几下才发现ashfinal改的不是我想要的效果.第一次会执行.并且不会退出.但不会执行第二次,第三次.
我需要循环执行.就是每一分钟.或者一小时.一天执行.比如现在时间2点.预定6小时后执行一次.执行完后等待.再过6小时后再执行一次 本帖最后由 ashfinal 于 2012-7-10 18:22 编辑
直接用sleep不更好?
While 1
sleep(60*1000)
MsgBox(0,"","运行程序")
WEnd
你原来的也能改改
#include <Date.au3>
$sNewDate = _DateAdd('n', 1, _NowCalc())
;MsgBox(4096, "", "1分钟后时间是:" & $sNewDate)
While 1
$nowdate = _NowCalc();原第三行移到这
If $nowdate = $sNewDate Then
MsgBox(0,"","运行程序")
$sNewDate = _DateAdd('n', 1, _NowCalc());复制原第二行到此,重新定义$sNewDate
EndIf
Sleep(1000)
WEnd
SLEEP休眠是可以用.但是如果是分钟,小时.那该添多大数?
谢谢....重定义后可以正常使用了..
页:
[1]