WPF 窗体中获取键盘和鼠标无操作时的超时提示

简介: 原文:WPF 窗体中获取键盘和鼠标无操作时的超时提示通过调用Windows API中的GetLastInputInfo来获取最后一次输入的时间 using System;using System.
原文: WPF 窗体中获取键盘和鼠标无操作时的超时提示

通过调用Windows API中的GetLastInputInfo来获取最后一次输入的时间

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;
using System.Runtime.InteropServices;

namespace WpfApplication1
{
     ///   <summary>
    
///  Window1.xaml 的交互逻辑
    
///   </summary>
     public  partial  class Window1 : Window
    {
        System.Windows.Threading.DispatcherTimer timer;

         public Window1()
        {
            InitializeComponent();
            timer =  new System.Windows.Threading.DispatcherTimer();
            timer.Interval =  new TimeSpan( 001);
            timer.Tick +=  new EventHandler(timer_Tick);
            timer.Start();
        }

         void timer_Tick( object sender, EventArgs e)
        {
             if (GetIdleTick() /  1000 >  10)   
            {
                MessageBox.Show( " 键盘或鼠标没有操作超过10秒 ");
            }
        }


        [DllImport( " user32.dll ")]
         static  extern  bool GetLastInputInfo( ref LASTINPUTINFO plii);

         public  static  long GetIdleTick()
        {
            LASTINPUTINFO lastInputInfo =  new LASTINPUTINFO();
            lastInputInfo.cbSize = Marshal.SizeOf(lastInputInfo);
             if (!GetLastInputInfo( ref lastInputInfo))  return  0;
             return Environment.TickCount - ( long)lastInputInfo.dwTime;
        }

        [StructLayout(LayoutKind.Sequential)]
         private  struct LASTINPUTINFO
        {
            [MarshalAs(UnmanagedType.U4)]
             public  int cbSize;
            [MarshalAs(UnmanagedType.U4)]
             public  uint dwTime;
        }

    }
}

 

目录
相关文章
|
9月前
|
C#
WPF控件和窗体一起放大一起缩小
WPF控件和窗体一起放大一起缩小
182 0
|
9月前
|
C# 容器
WPF框架下,窗体的嵌套显示
WPF框架下,窗体的嵌套显示
172 0
|
前端开发 C# Windows
WPF鼠标、键盘、拖拽事件、用行为封装事件
本文主要介绍了WPF中常用的鼠标事件、键盘事件以及注意事项,同时使用一个案例讲解了拓展事件。除此之外,本文还讲述如何用行为(Behavior)来封装事件。
|
C#
C# WPF 中用代码模拟鼠标和键盘的操作
原文:C# WPF 中用代码模拟鼠标和键盘的操作   原文地址   C#开发者都知道,在Winform开发中,SendKeys类提供的方法是很实用的。
2144 0
|
C# 前端开发
wpf中的datagrid绑定操作按钮是否显示或者隐藏
如图,需要在wpf中的datagrid的操作那列有个确认按钮,然后在某些条件下确认按钮可见,某些情况下不可见的,放在mvc里直接在cshtml页面中if..else就行了。 但是在wpf里不行。。网上搜索了好久才找到解决方法,原来只是binding那个visiable属性就行了,
6847 0
|
C#
WPF 悬浮键盘
原文:WPF 悬浮键盘 public class TouchScreenKeyboard : Window { #region Property & Variable & Cons...
763 0
|
C# C++
wpf C# 操作DirectUI窗口 SendMessage+MSAA
原文:wpf C# 操作DirectUI窗口 SendMessage+MSAA 最近做一个抓取qq用户资料的工具,需要获取qq窗口上的消息,以前这种任务是用句柄获取窗口中的信息,现在qq的窗口用的是DirectUI,只有窗口句柄,没有控件句柄,句柄这条路走不通了。
2192 0
|
C# 图形学
在WPF里面实现以鼠标位置为中心缩放移动图片
原文:在WPF里面实现以鼠标位置为中心缩放移动图片 在以前的文章使用WPF Resource以及Transform等技术实现鼠标控制图片缩放和移动的效果里面,介绍了如何在WPF里面移动和放大缩小图片,程序也支持使用滚轮的方式缩放图片。
1597 0
|
C#
WPF中获取鼠标相对于桌面位置
原文:WPF中获取鼠标相对于桌面位置 var transform = PresentationSource.FromVisual(this).CompositionTarget.TransformFromDevice; var mouse = transform.
730 0
|
C# Windows
WPF备忘录(2)WPF获取和设置鼠标位置与progressbar的使用方法
原文:WPF备忘录(2)WPF获取和设置鼠标位置与progressbar的使用方法 一、WPF 中获取和设置鼠标位置   方法一:WPF方法   Point p = Mouse.GetPosition(e.
987 0