Чтобы определить, если компьютер не использовался в течение определенного времени, я использую метод Win32API.GetLastInputTime()
. Я просто вычитаю его значение из DateTime.Now и сравниваю его с некоторым значением, хранящимся в настройках.GetLastInputTime показывает невозможное время?
Он работал отлично до этого, но недавно GetLastInputTime
начал показывать совершенно нелепые результаты - это показывает мне будущее. Сегодня он показывает мне 2 июля 2016 года.
Итак, есть ли у кого-нибудь идеи, что происходит? Как GetLastInputTime
получить время, и как это возможно, что на этот раз будущее?
Вероятно, - или, скорее, может быть, - есть что-то не так с обработкой 'DateTime' класса. Обратите внимание, что 02/07/2016 можно прочитать как 2 июля 2016 года или 7 февраля 2016 года. Но без дополнительной информации трудно сказать, является ли это проблемой. – Ian
Другая возможность заключается в том, что 'GetLastInputTime' возвращает * тики *, которые подвержены выхлопу:« ... время будет обнулено до нуля, если система будет работать непрерывно в течение 49.7 дней ... »https://msdn.microsoft. ком/EN-US/библиотека/окна/настольные/ms724408 (v = vs.85) .aspx; обратите внимание, что '13 мая 2016 года +49,7 дня' ==' 2 июля 2016 года –
Вычитание из DateTime.Now бессмысленно, что дает дату перезагрузки машины. Вы должны отдать его на * int * и вычесть его из Environment.TickCount. Который производит число миллисекунд с момента последнего события ввода. –