zoukankan      html  css  js  c++  java
  • c#超时锁定

    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;
            }
    
            
        }
    }
    


  • 相关阅读:
    .net core之log4net和过滤器
    记录待掌握的.net组件或框架或技术
    Spring 注释 @Autowired 和@Resource
    Java——Cookie与Session
    Hadoop
    分布式系统!
    mybatis 学习!
    Java动态代理一Proxy
    JavaWeb学习--Servlet认识
    Angular.JS
  • 原文地址:https://www.cnblogs.com/snake-hand/p/3144980.html
Copyright © 2011-2022 走看看