経過時間計測色々
                                                           玄関へお回り下さい。  
経過時間計測色々         (057)
   フォームにコマンドボタン2個とラベル3個を貼り付け下記コードを貼り付けて下さい

Option Explicit   'SampleNo=057 WindowsXP VB6.0(SP5) 2002.05.13

'システムを立ち上げてからの経過時間を高精度に取得する
Private Declare Function timeGetTime Lib "winmm.dll" () As Long

'上記同様だが精度少し低い
Private Declare Function GetTickCount Lib "kernel32" () As Long

Dim lngStartTime As Long
Dim StartTime  As Long
Dim st      As Single


Private Sub Command1_Click()
'測定開始
  lngStartTime = timeGetTime
  StartTime = GetTickCount
  st = Timer
  fTimeCount
End Sub


Private Sub Command2_Click()
'測定終了
  Label1.Caption = "timeGetTime : " & (timeGetTime - lngStartTime) / 1000
  Label2.Caption = "GetTickCount : " & (GetTickCount - StartTime) / 1000
  Label3.Caption = "Timer - st  : " & Timer - st
  Label4.Caption = "fTimeCount  : " & fTimeCount
End Sub


’関数化すると
Private Function fTimeCount() As String
  Static lngST As Long
  If lngST = 0& Then
    lngST = timeGetTime
  Else
    fTimeCount = "経過時間=" & Str$((timeGetTime - lngST) / 1000) & " 秒です"
    lngST = 0&
  End If
End Function


timeGetTime 関数と GetTickCount とでは殆ど変わらないようです。
VBの Timer 関数は少し精度が低いようです。





02/01/09