VB定时器控件如何用于执行以100毫秒为单位的事件过程

来源:百度知道 编辑:UC知道 时间:2024/09/28 12:44:38
Private Sub Form_Load()
Text1(1).Text = InputBox("设置启动时间(时:分:秒)", "时间设置", Time$)
End Sub

Private Sub Timer1_Timer()

Dim t As Integer
Dim sTest As String

Text1(0).Text = Time

sTest = Text1(1).Text

t = DateDiff("s", sTest, Time$)
If Abs(t) = 0 Then
Label1.Caption = "启动"
Command1_Click
ElseIf Abs(t) < 5 Then
Label1.Caption = "倒计时中"
Beep
Else
Label1.Caption = "请等待"
End If
End Sub

要实现的功能很简单:输入一个设定时间,当系统时间接近5秒以内开始提示,最后到点执行命令。上面的方法是以秒为单位的。

问题是:由于特殊需要,设定时间需要精确到以100毫秒为单位(即0.1秒为单位),定时执行命令。请问如何设定时间和如何比对系统时间(DateDiff是否可以继续使用)?
刚刚看了老三石的回答,可能我说的不太清楚,在明确一下问题:
1,如何设定时间,比如现在时间是13时5分8秒0毫秒,希望在13时6分10秒200毫秒执行任务,13时6分10秒200毫秒如何输入,缺省情况下时间变量只能到秒。
2,如何比对时间,现在的函数是DateDiff,以秒为单位,可以支持毫秒吗?

以下为为你量身定做的代码,基本可以实现你的要求,误差为10ms,另外DateDiff函数不支持ms级。。。

Dim i As Integer '定义全局变量,为了减少程序运行时间,尽量将变量定义在timer外面
Dim t As Integer
Dim sTest As String

Private Sub Command1_Click()
Print "OK"
End Sub

Private Sub Form_Load()
Text1(1).Text = InputBox("设置启动时间(时:分:秒)", "时间设置", Time$ & ":000") '设定时间输入加上ms级
i = 0 'i初值设为0
sTest = Text1(1).Text
Timer1.Interval = 10 'timer1设100ms动作一次
End Sub

Private Sub Timer1_Timer()
'Text1(1).Text = Time '该句多余,删除
t = DateDiff("s", Left(sTest, 8), Time$)
If Time$ = Left(sTest, 8) Then '如果设定时间的时分秒都和实际时间相同,开始ms级计时,每次加10MS
i = i + 10
If i = Right(sTest, 3) Then '如果ms级计时和设定也相同则启动程序
Label1.Caption = "启动" '由于该时间点昙花一现,故很难观察到label1.caption的改变
Command1_Click
End If
ElseI