ray88’s diary

お仕事で困ったとき用の自分用の覚書

Win64 API 処理の待機

■Sleep関数
 処理を一定期間休止させることができる。意図的にプログラムを休止させたいときや、一定期間後に処理を再開したい場合等に使用する。引数はミリ秒(1/1000秒)単位で記述する。

Declare PtrSafe Sub Sleep Lib "KERNEL32.dll" (ByVal dwMilliseconds As Long)
Sub Sleep_Sample()
    Sleep 3000
    MsgBox "3秒経過しました"
End Sub

■GetTickCount関数
 Windowsが移動して空経過した時間を取得する関数取得できる時間の単位はミリ秒(1/1000秒)です。GetTickCount関数を使用した場合、Excelを停止させないプログラム上の待機処理が可能となる。

Declare PtrSafe Function GetTickCount Lib "kernel32" () As Long
Sub GetTickCount_Sample()
    Dim StartTime As Long
    '休止処理開始時間を取得
    StartTime = GetTickCount
    '5秒経過するまで待機
    Do While GetTickCount - StartTime < 5000
        DoEvents
    Loop
    MsgBox "5秒経過しました"
End Sub