VBA System Idle

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

Leave a Reply

Your email address will not be published. Required fields are marked *

Chat WhatsApp
WhatsApp