高进度计时,精确到0.001秒,且不受任何干扰!

王朝vb·作者佚名  2006-01-08
窄屏简体版  字體: |||超大  

'在Project中加入一个Module,然后在其中加入以下代码:

Option Explicit

Type LARGE_INTEGER

lowpart As Long

highpart As Long

End Type

Public Declare Function QueryPerformanceCounter Lib "kernel32" _

(lpPerformanceCount As LARGE_INTEGER) As Long

Public Declare Function QueryPerformanceFrequency Lib "kernel32" _

(lpFrequency As LARGE_INTEGER) As Long

Public Declare Function timeSetEvent Lib "winmm.dll" (ByVal uDelay As Long, ByVal _

uResolution As Long, ByVal lpFunction As Long, ByVal dwUser As Long, _

ByVal uFlags As Long) As Long

Public Declare Function timeKillEvent Lib "winmm.dll" (ByVal uID As Long) As Long

Public Declare Function GetTickCount Lib "kernel32" () As Long

Public lMSFreq As Long

Public TimerCount As Single

Public lmmCount As Single

Public lTimeID As Long

Public actTime1 As Long

Public actTime2 As Long

Public iCountStart As Single

Dim iCount As Single

'注释: timeSetEvent的回调函数

Sub TimeProc(ByVal uID As Long, ByVal uMsg As Long, ByVal dwUser As Long, _

ByVal dw1 As Long, ByVal dw2 As Long)

Form1.Text2.Text = Format$(lmmCount, "00.00")

lmmCount = lmmCount - 0.01

If lmmCount <= 0 Then

iCountStart = 60

lmmCount = 60

TimerCount = 60

EndCount

End If

End Sub

Sub EndCount()

iCount = iCountStart

iCountStart = 0

timeKillEvent lTimeID

actTime2 = GetTickCount - actTime1

With Form1

.Command1.Enabled = True

.Command2.Enabled = False

.Timer1.Enabled = False

.Text1 = "计数器记时" + Format$((60 - iCount), "00.00") + " " _

+ "实际经过时间" + Format$((actTime2 / 1000), "00.00")

.Text2 = "计数器记时" + Format$((60 - lmmCount), "00.00") + " " _

+ "实际经过时间" + Format$((actTime2 / 1000), "00.00")

.Text3 = "计数器记时" + Format$((60 - TimerCount), "00.00") + " " _

+ "实际经过时间" + Format$((actTime2 / 1000), "00.00")

End With

End Sub

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航