LoginSignup
1
1

More than 5 years have passed since last update.

VBA Win32API timeGetTime TimerControl Class Win64/32共用

Posted at

ストップウォッチによる経過時間の取得方法について
を改造してClass Module化する。

標準モジュール


Sub test()
Dim startTime As Long
Dim endTime As Long
Dim clsTimer As timeGetTimeClass: Set clsTimer = New timeGetTimeClass ' Dim And New For timeGetTimeClass
Debug.Print clsTimer.Get_Timer
strattime = clsTimer.Get_Timer
endTime = clsTimer.Get_Timer
Debug.Print (endTime - startTime) / 1000 '1000
End Sub

Class Module ( timeGetTimeClass)


'''''''''''''''''''''''''''''''''''''
' Class Module
' timeGetTimeClass
' Win 64/32
' Win32API 関数の timeGetTime を使用します。今回、1秒ごとに経過時間の合計を表示するため、Timer コントロールを使用します。
''''''''''''''''''''''''''''''''''''''''
#If VBA7 Then
Private Declare PtrSafe Function timeGetTime Lib "winmm.dll" () As Long
#Else
Private Declare Function timeGetTime Lib "winmm.dll" () As Long
#End If

Property Get Get_Timer() As Long
Get_Timer = timeGetTime
End Property

''''SampleCode For Module
' 標準モジュールコ用のコードです
'Sub testTimerContlrol()
'Dim clsTimer As timeGetTimeClass: Set clsTimer = New timeGetTimeClass ' Dim And New For timeGetTimeClass
'Debug.Print clsTimer.Get_Timer
'End Sub

システムを起動した後の経過時間を、ミリ秒(ms)単位で取得します。この時間は、システムタイマの分解能による制限を受けます。システムタイマの分解能を取得するには、GetSystemTimeAdjustment 関数を使います。
DWORD GetTickCount(VOID);
パラメータ
パラメータはありません。
戻り値
関数が成功すると、システムを起動した後の経過時間が、ミリ秒単位で返ります。
解説
経過時間は DWORD 型で保存されています。システムを 49.7 日間連続して動作させると、経過時間は 0 に戻ります。
より高い分解能のタイマが必要な場合は、「」(マルチメディアタイマ)または「」(高分解能タイマ)を使います。
Windows NT/2000:コンピュータを起動した後の経過時間を取得するには、レジストリの HKEY_PERFORMANCE_DATA キー内の System Up Time カウンタを取得します。この値は、8 バイトです。詳細については、MSDN ライブラリの「」を参照してください。
Example
次のサンプルコードは、タイマが 0 に戻る現象に対処する方法を示します。
DWORD dwStart = GetTickCount();
// 極端に長い時間が経過した場合は、実行を停止する。
if(GetTickCount() - dwStart>= TIMELIMIT)
Cancel();
ここで、TIMELIMIT は、アプリケーションが関心を持つ特定の経過時間を意味します。
対応情報
Windows NT/2000:Windows NT 3.1 以降
Windows 95/98:Windows 95 以降
ヘッダー:Winbase.h 内で宣言、Windows.h をインクルード
インポートライブラリ:Kernel32.lib を使用

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1