Pada tutorial kali ini, bagaimana memanfaatkan Windows API untuk mengecek waktu idle menggunakan VBA.
Waktu idle adalah waktu dimana VBA tidak digunakan atau didiamkan begitu saja.
Pada contoh kali ini jika VBA telah idle selama lebih dari 20 detik maka sebuah pesan ditampilkan. Kondisi ini juga bisa diganti dengan aksi lain jika diperlukan.
Misalnya jika telah idel lebih dari 20 detik maka Userform akan menutup dengan sendirinya.
Berikut ini adalah script yang digunakan untuk mengecek system idle di VBA.
Declare PtrSafe Function GetLastInputInfo Lib "user32.dll" ( _
ByRef plii As LASTINPUTINFO) As Long
Declare PtrSafe Function GetTickCount Lib "kernel32.dll" () As Long
Private Type LASTINPUTINFO
cbSize As Long
dwTime As Long
End Type
Dim DtTime As Date
Function getDetik()
Dim plii As LASTINPUTINFO
plii.cbSize = Len(plii)
Call GetLastInputInfo(plii)
getDetik = (GetTickCount - plii.dwTime) / 1000
End Function
Sub CekDetik()
Dim Detiknya As Long
Detiknya = getDetik
If Detiknya > 20 Then Unload UserForm1
UserForm1.Label4.Caption = "idle for : " & Detiknya
DtTime = Now + TimeValue("00:00:10")
Application.OnTime DtTime, "CekDetik", False
End Sub
Sub StopCek()
On Error Resume Next
Application.OnTime DtTime, "CekDetik", , False
End Sub