Ich komme leider nicht alleine weiter und suche Rat. Mein Problem:
Eine UserForm soll nach Ablauf von z.B. 120 sec. geschlossen werden, wenn keine Tastatur- oder Mausaktivität vorliegt, sprich niemand im Programm arbeitet ("Auto-Log off"). Hintergrund: Es soll dann eine erneute Anmeldung mit Password erforderlich sein.
Folgender Code funktioniert für die Feststellung von Mausaktivität gut:
Private Type POINTAPI
x As Long
y As Long
End Type
Private Declare
Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long
Function MausPositionVeraendert() As Boolean
lRetVal = GetCursorPos(pTargetPoint)
If pTargetPoint.x = x_alt And pTargetPoint.y = y_alt Then
MausPositionVeraendert = False
Else
MausPositionVeraendert = True
End If
x_alt = pTargetPoint.x
y_alt = pTargetPoint.y
End Function
Sub TimerRoutine()
If MausPositionVeraendert = True Then
timer_count = timer_multiplier
Else
timer_count = timer_count - 1
End If
If timer_count = 0 Then
LogIn.Show ' Anmeldebildschirm
Else
Call TimerSetzen(timer_count)
End If
End Sub
Sub TimerSetzen(c As Integer)
TimerGestartet = Now
Application.OnTime earliestTime:=TimerGestartet + TimeValue(timerintervall$), Procedure:=" _
_
TimerRoutine"
timer_count = c
End Sub
Sub TimerAktualisieren()
Call TimerLoeschen
Call TimerSetzen(timer_multiplier)
End Sub
Leider weiß ich jetzt nicht weiter, wie ich die Tastatur analog zur Mausposition abfragen soll, um Aktivität festzustellen.
Ich habe mit GetInputState experimentiert, aber keine Lösung gefunden.
Hat jemand eine zündende Idee?
Vielen Dank für jede Antwort
Oliver