为了确定,如果PC没有使用一段时间,我正在使用 Win32API.GetLastInputTime()方法.我只是从DateTime.Now中减去它的值,并将它与存储在设置中的某个值进行比较.
它以前工作得很好,但最近GetLastInputTime开始显示完全荒谬的结果 - 它显示了我未来的时间.今天它向我展示了2016年7月2日.
那么,有没有人有任何想法,发生了什么?如何GetLastInputTime获得时间,以及如何可能,这一次是未来的?
因为GetLastInputTime返回标记为UInt32(DWORD)
https://msdn.microsoft.com/en-us/library/windows/desktop/ms724408(v=vs.85).aspx
你可以有一个整数溢出:
经过的时间存储为DWORD值.因此,如果系统连续运行49.7天,时间将回绕到零.要避免此问题,请使用GetTickCount64函数.否则,在比较时间时检查溢出情况.
因此有未来的日期:
13 May 2016 + 49.7 days == 2 July 2016
Run Code Online (Sandbox Code Playgroud)