如何控制某一过程每天下午6:00运行,每天只运行一次 (50分)

L

lf43

Unregistered / Unconfirmed
GUEST, unregistred user!
如何控制某一过程每天下午6:00运行,每天只运行一次
 
用定时器不行?
 
你的过程是存储过程吗
设置计划任务呀,想哪个时间都行
 
楼主正在制作一个病毒,每天下午6:00运行,
大家小心了 -_-!!
 
用计划任务不就行了
 
该程序如果是常驻内存也就是一直运行的话,做个检测系统时间的控制函数好了
如果不是,那就像finalrinoa说的,用计划任务
 
procedure TForm1.Timer1Timer(Sender: TObject);
begin
if TimeToStr(Time) = '18:00:00' then
begin
//DoSomething;
end;
end;
 
thx1180的方法值得商量,定时器的消息(wm_timer)优先级是很低的,如果在18点整的那一秒钟内,机器负担比较重,偏就没有触发OnTimer,那么这一天就不会运行了.
 
呵呵,我只是提供一个思路。可以用线程定时器啊。
 
常驻内存有点浪费资源!不知道定时杀毒程序的核心内容是啥?
 
听听大家见解
 
在开机时取得系统时间,计算出当前时间与18:00:00的差距为X秒,放置一个Timer1,它的Interval=X*1000,在Timer1Timer时写要执行的过程。
procedure TForm1.Timer1Timer(Sender: TObject);
begin
Timer1.interval := 0 ;
//Do you procedure ;
end;
 
稍更正一下,是在软件刚运行时取系统时间,不是开机时。
 
如果在18点整的那一秒钟内,机器负担比较重,偏就没有触发OnTimer,那么这一天就不会运行了. 这可能吗?死机了?
 
Timer在软件刚运行时给它赋值的时候,即Timer1.Interval:=X*1000时,就已被触发,经过Interval指定的毫秒后,运行所指定的过程,所以不会出现不触发的情况。
 
to:lf43
把你的问题具体点吧,是程序自己调用特定过程呢,还是需要其他程序(象计划任务)激活这个程序呢~~~~~~~~
不过上面的回答应该可以解决这些问题了~~~~~~~~~~[:D]
 
程序自己调用特定过程
 
有一个值用来记录下一次运行的时间,计时器判断,如果超过这个时间便运行操作。
运行后计算下一次的时间。
如果防止一启动就执行。可以在每次 OnTimter 时,记录时间,下一次 OnTimer 时判断与上一次时间正好跳过预定定单,便执行操作。
(应该还有一个,运行时间段,比如如何超过十分钟就下一次再执行什么的)
 
可以呀!用时间>每天的 18:00:00,然后将时间加一为明天的做的时间了!
 
顶部