首先取得上次关闭此程序到这次开启程序这之间的时间 ,算法 偶已经搞定。
这个时间量就是游戏中的可用时间,用户利用这个时间去完成各种各样的任务
现在我要实现一个这样的事件
当满足条件1时 ,变量1每过24小时 变化X 。
求程序实现思路~
记录分钟数或秒数,够24小时变一下??
把关闭此程序的时间保存到数据库中,下次开启程序读出来算差值。
不知是否可行?
1 你需要一个文件或数据库,保存关闭程序时间、累计时间和累计开机时间。
2 开机时将累计开机时间读入变量。用一个变量记录本次开机时间。计算新的可用时间并保存。
3 利用 API 长延时 Timer,将时间间隔设置为 24 小时-累计开机时间。在 Timer 事件中,将累计开机时间减去 24 小时,并调整你的变量 l;重新设置 Timer 间隔为 24 小时。
4 关闭程序时,保存关闭程序时间;利用开机时间计算本次程序运行时长,加到累计开机时间上,保存。
长延时 Timer 代码:
模块中代码
Dim lTimerId As Long
Private Declare Function SetTimer Lib "user32" (ByVal hWnd As Long, ByVal nIDEvent As Long, ByVal uElapse As Long, ByVal lpTimerFunc As Long) As Long
Private Declare Function KillTimer Lib "user32" (ByVal hWnd As Long, ByVal nIDEvent As Long) As Long
Private Sub TimerProc(ByVal lHwnd As Long, ByVal lMsg As Long, ByVal lTimerId As Long, ByVal lTime As Long)
Dim lResult As Long
lResult = StopTimer(lTimerId)
Call InsertYourProcessNameHere
code to be executed after interval
End Sub
Public Sub StartTimer(lInterval As Long) convert interval to milliseconds prior to passing
lTimerId = SetTimer(0, 0, lInterval, AddressOf TimerProc)
End Sub
Public Function StopTimer(lTimerId As Long) As Long
must pass the TimerId returned by SetTimer
StopTimer = KillTimer(0, lTimerId)
End Function
调用方式
Call StartTimer(5000) 5 seconds
你用一个记录一个开始时间一个结束时间一比较不就是了
记录程序的开始与停止时间,一比较就完了,怎么让你说得那么复杂
顶一下!3
得到的两次的时间,上次的时间\24(整除),不等于0时,说明小于24小时,变量不变,大于时,变量变化.时间mod24得到的余数,这次过的时间+余数,够24,变化再次变化,mod变量变零
dim totaltime as long
dim timer1 as long
dim timer2 as long
dim Variable s ..
if totaltime\24>0 then
Variable="自己想要变化的"
else
timer1=totaltime Mod 24
end if
if timer1+timer2>=24 then
Variable="自己想要变化的"
timer1=0
end if