| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 |
- using Permission;
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using System.Windows.Forms;
- namespace YangjieTester
- {
- public class InputMessageFilter : IMessageFilter
- {
- public bool PreFilterMessage(ref Message m)
- {
- const int LBUTTONDOWN = 0x0201;
- const int LBUTTONUP = 0x0202;
- const int KEYDOWN = 0x0100;
- if (m.Msg == LBUTTONDOWN || m.Msg == LBUTTONUP || m.Msg == KEYDOWN)
- {
- InactivityMonitor.RecordActivity();
- }
- return false; // 不拦截消息,继续传递
- }
- }
- public static class InactivityMonitor
- {
- private static DateTime _lastActivity = DateTime.Now;
- private static System.Threading.Timer _timer;
- private static readonly object _lock = new object();
- static InactivityMonitor()
- {
- _timer = new System.Threading.Timer(CheckInactivity, null, TimeSpan.Zero, TimeSpan.FromSeconds(1));
- }
- public static void RecordActivity()
- {
- lock (_lock)
- {
- _lastActivity = DateTime.Now;
- }
- }
- private static void CheckInactivity(object state)
- {
- TimeSpan idle;
- lock (_lock)
- {
- idle = DateTime.Now - _lastActivity;
- }
- if (idle >= TimeSpan.FromMinutes(10))
- {
- // 回到 UI 线程执行操作
- if (Application.OpenForms.Count > 0)
- {
- var mainForm = Application.OpenForms[0];
- if (!mainForm.IsDisposed)
- {
- mainForm.BeginInvoke(new Action(() =>
- {
- PerformAutoAction();
- }));
- }
- }
- }
- }
- private static void PerformAutoAction()
- {
- // 比如退出、锁屏等
- // Application.Exit();
- PermissionManager.LogOffAndSignInOperator();
- }
- }
- }
|