用VB做的程序总有个窗体吧,在任意一个窗体放一个timer。 然后改下以下代码,放到类模块,这是我正在使用的方法 Option ExplicitPrivate WithEvents myTimer As Timer Private TimerName As String Public Event TimerRunning() Public Sub LoadTimer(theTimeSpan As Integer) Dim str1 As String Dim str2 As String Dim str3 As String str1 = Replace(GUIDGen, "-", "") str2 = Replace(str1, "{", "") str3 = Replace(str2, "}", "") TimerName = str3 Set myTimer = FormTimers.Controls.Add("VB.timer", "T" & TimerName) myTimer.Interval = theTimeSpan myTimer.Enabled = True End Sub Private Sub myTimer_Timer() RaiseEvent TimerRunning End Sub Public Sub UnloadTimer() myTimer.Enabled = False Set myTimer = Nothing FormTimers.Controls.Remove "T" & TimerName End Sub Public Sub SetInterval(theTimeSpan As Long) myTimer.Interval = theTimeSpan End Sub
无窗口程序中, 使用timer 需要自己设计好代码流程 设置一个消息循环,在调用了settimer后,须立即进入消息循环, 或在settimer前就进入程序代码入口..用户代码.. timerid = settimer xx,xx,x,x,xdo if getmessage(00000) = 0 then exit do if msg.message = wm_timer then if msg.wparam = timerid then msgbox "timerid 为xx的timer正在运行" end if loop
或者Form1.Hide
然后改下以下代码,放到类模块,这是我正在使用的方法
Option ExplicitPrivate WithEvents myTimer As Timer
Private TimerName As String
Public Event TimerRunning()
Public Sub LoadTimer(theTimeSpan As Integer)
Dim str1 As String
Dim str2 As String
Dim str3 As String
str1 = Replace(GUIDGen, "-", "")
str2 = Replace(str1, "{", "")
str3 = Replace(str2, "}", "")
TimerName = str3
Set myTimer = FormTimers.Controls.Add("VB.timer", "T" & TimerName)
myTimer.Interval = theTimeSpan
myTimer.Enabled = True
End Sub
Private Sub myTimer_Timer()
RaiseEvent TimerRunning
End Sub
Public Sub UnloadTimer()
myTimer.Enabled = False
Set myTimer = Nothing
FormTimers.Controls.Remove "T" & TimerName
End Sub
Public Sub SetInterval(theTimeSpan As Long)
myTimer.Interval = theTimeSpan
End Sub
http://topic.csdn.net/u/20090527/11/439c51aa-0e80-4619-b956-a3431afe5a2c.html?17861
do
if now - dt > 1 / 24 / 3600 * 10 then ' 10秒
...
dt = now
end if
doevents
loop
设置一个消息循环,在调用了settimer后,须立即进入消息循环, 或在settimer前就进入程序代码入口..用户代码..
timerid = settimer xx,xx,x,x,xdo
if getmessage(00000) = 0 then exit do
if msg.message = wm_timer then
if msg.wparam = timerid then msgbox "timerid 为xx的timer正在运行"
end if
loop