VB声明 Declare Function GetTickCount Lib "kernel32" Alias "GetTickCount" () As Long 说明 用于获取自windows启动以来经历的时间长度(毫秒) 返回值 Long,以毫秒为单位的windows运行时间 private beginLong as long private endlong as longbeginlong=gettickcount() 你的操作 endlong=gettickcount()间隔=endlong-beginlong
GetTickCount虽然是毫秒级的,但是它无法精确到1毫秒,而好像是55毫秒的样子。
下面是一个产生精确延时的例子: Private Declare Function QueryPerformanceCounter Lib "kernel32" (lpPerformanceCount As Currency) As Long Private Declare Function QueryPerformanceFrequency Lib "kernel32" (lpFrequency As Currency) As LongPrivate Sub DelayTime(ByVal DelayNum As Long) Dim Ctr1, Ctr2, Freq As Currency Dim Count As Double
If QueryPerformanceFrequency(Freq) Then QueryPerformanceCounter Ctr1 Do QueryPerformanceCounter Ctr2 Loop While (Ctr2 - Ctr1) / Freq * 1000 < DelayNum Else MsgBox "不支持高精度计数器!" End If End SubPrivate Sub Command1_Click() Call DelayTime(1000) MsgBox "test" End Sub
Declare Function GetTickCount Lib "kernel32" Alias "GetTickCount" () As Long
说明
用于获取自windows启动以来经历的时间长度(毫秒)
返回值
Long,以毫秒为单位的windows运行时间 private beginLong as long
private endlong as longbeginlong=gettickcount()
你的操作
endlong=gettickcount()间隔=endlong-beginlong
Private Declare Function QueryPerformanceCounter Lib "kernel32" (lpPerformanceCount As Currency) As Long
Private Declare Function QueryPerformanceFrequency Lib "kernel32" (lpFrequency As Currency) As LongPrivate Sub DelayTime(ByVal DelayNum As Long)
Dim Ctr1, Ctr2, Freq As Currency
Dim Count As Double
If QueryPerformanceFrequency(Freq) Then
QueryPerformanceCounter Ctr1
Do
QueryPerformanceCounter Ctr2
Loop While (Ctr2 - Ctr1) / Freq * 1000 < DelayNum
Else
MsgBox "不支持高精度计数器!"
End If
End SubPrivate Sub Command1_Click()
Call DelayTime(1000)
MsgBox "test"
End Sub
Function TimeDiff(sBegin, sEnd)
Dim iHourB, iMinuteB, iSecondB, iMiniSecondB
Dim iHourE, iMinuteE, iSecondE, iMiniSecondE
Dim dTimeB, dTimeE, dTimeDiff
Dim iHour, iMinute, iSecond, iMiniSecondiHourB = clng(Left(sBegin, 2))
iMinuteB = clng(Mid(sBegin, 4, 2))
iSecondB = clng(Mid(sBegin, 7, 2))
iMiniSecondB = clng(Mid(sBegin, 10, 4))iHourE = clng(Left(sEnd, 2))
iMinuteE = clng(Mid(sEnd, 4, 2))
iSecondE = clng(Mid(sEnd, 7, 2))
iMiniSecondE = clng(Mid(sEnd, 10, 4))dTimeB = iHourB * 3600 + iMinuteB * 60 + iSecondB + iMiniSecondB / 1000
dTimeE = iHourE * 3600 + iMinuteE * 60 + iSecondE + iMiniSecondE / 1000
dTimeDiff = dTimeE - dTimeBiHour = Int(dTimeDiff / 3600)
dTimeDiff = dTimeDiff - iHour * 3600
iMinute = Int(dTimeDiff / 60)
dTimeDiff = dTimeDiff - iMinute * 60
iSecond = Int(dTimeDiff)
dTimeDiff = dTimeDiff - Int(dTimeDiff)
iMiniSecond = dTimeDiffTimeDiff = iHour & "小时" & iMinute & "分钟" & iSecond & FormatNumber(iMiniSecond, 3) & "秒"
End Function