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
I've used the GMA.UserActivityMonitor library a while ago to achieve this.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With