Detecting idle users in Winforms

I'd like to pause my program if a user is inactive for 5 minutes. By inactive I mean hasn't pressed their mouse or their keyboard during that time (including outside the program too!). Any starting points?


Within a timer you could p/invoke GetLastInputInfo() which will return the number ms since input was detected from the user, across all processes in the current session.


This question is very similar to an old question:

.NET equivalent for GetLastInputInfo?

Which referenced a good article describing some different options in C#:

http://www.codeproject.com/KB/cs/uim.aspx

If you don't mind using P/Invoke and being limited to running on windows systems, then using P/Invoke to call GetLastInputInfo() is probably the simplest method of accomplishing what you want.


you could override the WndProc and look for the WM_IDLE message