可替代VB自带的Timer控件的Timer类用这个类可以替代VB自带的Timer控件,这样就不用在无窗体的项目中仅为了使用Timer而多加一个窗体了。我一般用在ActiveX exe中用来分离系统控制权,用Timer的好处是避免控制权死锁,这样也就模拟出了多线程(实际上是多进程),能给用户更好的体验。代码如下:
可替代VB自带的Timer控件的Timer类
可替代VB自带的Timer控件的Timer类标准模块(mTimer):
可替代VB自带的Timer控件的Timer类
Option Explicit
可替代VB自带的Timer控件的Timer类
Private Declare Sub CopyMemory Lib "kernel32.dll" Alias "RtlMoveMemory" (ByRef Destination As Any, ByRef Source As Any, ByVal Length As Long)
可替代VB自带的Timer控件的Timer类
Public TimerColl As New VBA.Collection
可替代VB自带的Timer控件的Timer类
可替代VB自带的Timer控件的Timer类
Public Sub TimeProc(ByVal hWnd As Long, ByVal uMsg As Long, ByVal idEvent As Long, ByVal dwTime As Long)
可替代VB自带的Timer控件的Timer类
Dim Timer As Timer, lpTimer As Long
可替代VB自带的Timer控件的Timer类lpTimer 
= TimerColl("ID:" & idEvent)
可替代VB自带的Timer控件的Timer类CopyMemory 
Timer, lpTimer, 4&
可替代VB自带的Timer控件的Timer类
Timer.PulseTimer
可替代VB自带的Timer控件的Timer类CopyMemory 
Timer0&4&
可替代VB自带的Timer控件的Timer类
End Sub
可替代VB自带的Timer控件的Timer类
可替代VB自带的Timer控件的Timer类类模块(
Timer):
可替代VB自带的Timer控件的Timer类
Option Explicit
可替代VB自带的Timer控件的Timer类
可替代VB自带的Timer控件的Timer类
Private Declare Function SetTimer Lib "user32" (ByVal hWnd As Long, ByVal nIDEvent As Long, ByVal uElapse As Long, ByVal lpTimerFunc As LongAs Long
可替代VB自带的Timer控件的Timer类
Private Declare Function KillTimer Lib "user32" (ByVal hWnd As Long, ByVal nIDEvent As LongAs Long
可替代VB自带的Timer控件的Timer类
可替代VB自带的Timer控件的Timer类
Private m_TimerID As Long
可替代VB自带的Timer控件的Timer类
Private m_Interval As Long
可替代VB自带的Timer控件的Timer类
Private m_Enabled As Boolean
可替代VB自带的Timer控件的Timer类
可替代VB自带的Timer控件的Timer类
Public Tag As Variant
可替代VB自带的Timer控件的Timer类
Public Event Timer()
可替代VB自带的Timer控件的Timer类
可替代VB自带的Timer控件的Timer类
Public Property Get Interval() As Long
可替代VB自带的Timer控件的Timer类Interval 
= m_Interval
可替代VB自带的Timer控件的Timer类
End Property
可替代VB自带的Timer控件的Timer类
可替代VB自带的Timer控件的Timer类
Public Property Let Interval(ByVal Value As Long)
可替代VB自带的Timer控件的Timer类m_Interval 
= Value
可替代VB自带的Timer控件的Timer类Enabled 
= m_Enabled
可替代VB自带的Timer控件的Timer类
End Property
可替代VB自带的Timer控件的Timer类
可替代VB自带的Timer控件的Timer类
Public Property Get Enabled() As Boolean
可替代VB自带的Timer控件的Timer类Interval 
= m_Enabled
可替代VB自带的Timer控件的Timer类
End Property
可替代VB自带的Timer控件的Timer类
可替代VB自带的Timer控件的Timer类
Public Property Let Enabled(ByVal Value As Boolean)
可替代VB自带的Timer控件的Timer类
If Value Then
可替代VB自带的Timer控件的Timer类m_Enabled 
= StartTimer
可替代VB自带的Timer控件的Timer类
Else
可替代VB自带的Timer控件的Timer类
Call StopTimer
可替代VB自带的Timer控件的Timer类
End If
可替代VB自带的Timer控件的Timer类
End Property
可替代VB自带的Timer控件的Timer类
可替代VB自带的Timer控件的Timer类
Private Function StartTimer() As Boolean
可替代VB自带的Timer控件的Timer类
If m_TimerID = 0 Then
可替代VB自带的Timer控件的Timer类
If m_Interval > 0 Then
可替代VB自带的Timer控件的Timer类m_TimerID 
= SetTimer(00, m_Interval, AddressOf TimeProc)
可替代VB自带的Timer控件的Timer类
If m_TimerID <> 0 Then
可替代VB自带的Timer控件的Timer类TimerColl.Add ObjPtr(Me), 
"ID:" & m_TimerID
可替代VB自带的Timer控件的Timer类StartTimer 
= True
可替代VB自带的Timer控件的Timer类
End If
可替代VB自带的Timer控件的Timer类
Else
可替代VB自带的Timer控件的Timer类m_Enabled 
= True
可替代VB自带的Timer控件的Timer类
End If
可替代VB自带的Timer控件的Timer类
End If
可替代VB自带的Timer控件的Timer类
End Function
可替代VB自带的Timer控件的Timer类
可替代VB自带的Timer控件的Timer类Friend 
Sub PulseTimer()
可替代VB自带的Timer控件的Timer类RaiseEvent 
Timer
可替代VB自带的Timer控件的Timer类
End Sub
可替代VB自带的Timer控件的Timer类
可替代VB自带的Timer控件的Timer类
Private Sub StopTimer()
可替代VB自带的Timer控件的Timer类
If m_TimerID <> 0 Then
可替代VB自带的Timer控件的Timer类KillTimer 
0, m_TimerID
可替代VB自带的Timer控件的Timer类TimerColl.Remove 
"ID:" & m_TimerID
可替代VB自带的Timer控件的Timer类m_TimerID 
= 0
可替代VB自带的Timer控件的Timer类m_Enabled 
= False
可替代VB自带的Timer控件的Timer类
End If
可替代VB自带的Timer控件的Timer类
End Sub
可替代VB自带的Timer控件的Timer类
可替代VB自带的Timer控件的Timer类
Private Sub Class_Terminate()
可替代VB自带的Timer控件的Timer类
Call StopTimer
可替代VB自带的Timer控件的Timer类
End Sub
可替代VB自带的Timer控件的Timer类
可替代VB自带的Timer控件的Timer类使用方法:
可替代VB自带的Timer控件的Timer类
Private WithEvents Timer1 As Timer
可替代VB自带的Timer控件的Timer类
Private Sub Form_Load()
可替代VB自带的Timer控件的Timer类
Set Timer1 = New TimerLib.Timer
可替代VB自带的Timer控件的Timer类Timer1.Interval 
= 1000
可替代VB自带的Timer控件的Timer类Timer1.Enabled 
= True
可替代VB自带的Timer控件的Timer类
End Sub
可替代VB自带的Timer控件的Timer类
Private Sub Timer1_Timer()
可替代VB自带的Timer控件的Timer类Debug.Print 
Now
可替代VB自带的Timer控件的Timer类
End Sub 

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2022-01-11
  • 2022-02-02
  • 2022-12-23
  • 2022-12-23
  • 2021-08-01
  • 2021-09-15
猜你喜欢
  • 2021-06-23
  • 2021-11-01
  • 2021-12-15
  • 2021-07-07
相关资源
相似解决方案