c#超时锁定

来源:互联网 发布:推荐算法的java实现 编辑:程序博客网 时间:2024/05/17 03:42
using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Text;using System.Windows.Forms;using System.Runtime.InteropServices;namespace VistaRenderer{    public partial class FrmTestTimeout : Form    {        public FrmTestTimeout()        {            InitializeComponent();// this.timer1 = new System.Windows.Forms.Timer(this.components);        }        private void FrmTestTimeout_Load(object sender, EventArgs e)        {            timer1.Enabled = true;            timer1.Interval = 2 * 1000;// 计时器触发间隔 2秒            this.timer1.Tick += new EventHandler(timer1_Tick);        }        /// <summary>        /// 计时器触发        /// </summary>        /// <param name="sender"></param>        /// <param name="e"></param>        void timer1_Tick(object sender, EventArgs e)        {            // 距离上一次系统输入时间大于5秒            if (GetLastInputTime() >=  5 * 1000)             {                MessageBox.Show("time out");//这里可以写超时处理,比如弹出一个锁定窗口            }        }        [StructLayout(LayoutKind.Sequential)]        struct LASTINPUTINFO        {            [MarshalAs(UnmanagedType.U4)]            public int cbSize;            [MarshalAs(UnmanagedType.U4)]            public uint dwTime;        }        [DllImport("user32.dll")]        static extern bool GetLastInputInfo(ref LASTINPUTINFO plii);        /// <summary>        /// 获得距离上一次操作时间间隔        /// </summary>        /// <returns></returns>        static long GetLastInputTime()        {            LASTINPUTINFO vLastInputInfo = new LASTINPUTINFO();            vLastInputInfo.cbSize = Marshal.SizeOf(vLastInputInfo);            if (!GetLastInputInfo(ref vLastInputInfo)) return 0;            return Environment.TickCount - (long)vLastInputInfo.dwTime;        }            }}

原创粉丝点击