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