LastUserInput ist nicht das Problem. Da wird es auch keine 50 Tage ohne Eingabe geben.
Code:
currentTickCount := GetTickCount()
Das bringt den Überlauf, wenn der Rechner mehr als 50 Tage ohne Neustart läuft. Und der Überlauf ist dann bei jedem Aufruf, auch wenn die letzte Eingabe 3 min her ist.
Also sollte man schon auf GetTickCount64 und UInt64 umstellen. Dann muss er auch nicht alle 50 Tage neu gestartet werden.