|
|
@@ -522,6 +522,7 @@ namespace TeamAAS_VP.ViewModels
|
|
|
if (!_isTrackingUserInput)
|
|
|
{
|
|
|
InputManager.Current.PostProcessInput += OnUserInput;
|
|
|
+ ComponentDispatcher.ThreadFilterMessage += OnThreadFilterMessage;
|
|
|
_isTrackingUserInput = true;
|
|
|
}
|
|
|
|
|
|
@@ -547,10 +548,16 @@ namespace TeamAAS_VP.ViewModels
|
|
|
if (_isTrackingUserInput)
|
|
|
{
|
|
|
InputManager.Current.PostProcessInput -= OnUserInput;
|
|
|
+ ComponentDispatcher.ThreadFilterMessage -= OnThreadFilterMessage;
|
|
|
_isTrackingUserInput = false;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ private void RecordPermissionActivity()
|
|
|
+ {
|
|
|
+ _lastPermissionActivityTime = DateTime.Now;
|
|
|
+ }
|
|
|
+
|
|
|
/// <summary>
|
|
|
/// 记录用户输入时间。
|
|
|
/// 键盘、鼠标、滚轮、触摸和手写笔输入都会刷新空闲计时。
|
|
|
@@ -567,7 +574,44 @@ namespace TeamAAS_VP.ViewModels
|
|
|
input is TouchEventArgs ||
|
|
|
input is StylusEventArgs)
|
|
|
{
|
|
|
- _lastPermissionActivityTime = DateTime.Now;
|
|
|
+ RecordPermissionActivity();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private void OnThreadFilterMessage(ref MSG msg, ref bool handled)
|
|
|
+ {
|
|
|
+ if (IsUserInputMessage(msg.message))
|
|
|
+ {
|
|
|
+ RecordPermissionActivity();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private static bool IsUserInputMessage(int message)
|
|
|
+ {
|
|
|
+ switch (message)
|
|
|
+ {
|
|
|
+ case 0x0100: // WM_KEYDOWN
|
|
|
+ case 0x0101: // WM_KEYUP
|
|
|
+ case 0x0104: // WM_SYSKEYDOWN
|
|
|
+ case 0x0105: // WM_SYSKEYUP
|
|
|
+ case 0x0200: // WM_MOUSEMOVE
|
|
|
+ case 0x0201: // WM_LBUTTONDOWN
|
|
|
+ case 0x0202: // WM_LBUTTONUP
|
|
|
+ case 0x0203: // WM_LBUTTONDBLCLK
|
|
|
+ case 0x0204: // WM_RBUTTONDOWN
|
|
|
+ case 0x0205: // WM_RBUTTONUP
|
|
|
+ case 0x0206: // WM_RBUTTONDBLCLK
|
|
|
+ case 0x0207: // WM_MBUTTONDOWN
|
|
|
+ case 0x0208: // WM_MBUTTONUP
|
|
|
+ case 0x0209: // WM_MBUTTONDBLCLK
|
|
|
+ case 0x020A: // WM_MOUSEWHEEL
|
|
|
+ case 0x020B: // WM_XBUTTONDOWN
|
|
|
+ case 0x020C: // WM_XBUTTONUP
|
|
|
+ case 0x020D: // WM_XBUTTONDBLCLK
|
|
|
+ case 0x020E: // WM_MOUSEHWHEEL
|
|
|
+ return true;
|
|
|
+ default:
|
|
|
+ return false;
|
|
|
}
|
|
|
}
|
|
|
|