• 获取键盘和鼠标没有操作的时间


    public class MouseKeyBoardOperate
    
    {
    
    /// <summary>
    
    /// 创建结构体用于返回捕获时间
    
    /// </summary>
    
    [StructLayout(LayoutKind.Sequential)]
    
    struct Lastinputinfo
    
    {
    
    /// <summary>
    
    /// 设置结构体块容量
    
    /// </summary>
    
    [MarshalAs(UnmanagedType.U4)]
    
    public int cbSize;
    
     
    
    /// <summary>
    
    /// 抓获的时间
    
    /// </summary>
    
    [MarshalAs(UnmanagedType.U4)]
    
    public uint dwTime;
    
    }
    
     
    
    [DllImport("user32.dll")]
    
    private static extern bool GetLastInputInfo(ref Lastinputinfo plii);
    
     
    
    /// <summary>
    
    /// 获取键盘和鼠标没有操作的时间
    
    /// </summary>
    
    /// <returns>用户上次使用系统到现在的时间间隔,单位为秒</returns>
    
    public static long GetLastInputTime()
    
    {
    
    var vLastInputInfo = new Lastinputinfo();
    
    vLastInputInfo.cbSize = Marshal.SizeOf(vLastInputInfo);
    
    if (!GetLastInputInfo(ref vLastInputInfo))
    
    {
    
    return 0;
    
    }
    
    else
    
    {
    
    var count = Environment.TickCount - (long)vLastInputInfo.dwTime;
    
    var icount = count / 1000;
    
    return icount;
    
    }
    
    }
    

      

     private void timerUC_Tick(object sender, EventArgs e)
    
           {
    
               try
    
               {
    
                   int TotalSecond = 60;//设置时间为60s
    
                   var remainTime = TotalSecond - MouseKeyBoardOperate.GetLastInputTime();//总时间-用户未操作的时间
    
                   this.labRT.Text = remainTime.ToString(CultureInfo.InvariantCulture);//显示离关闭的剩余时间
    
     
    
                   if (remainTime == 30)
    
                   {
    
                       this.labRT.ForeColor = Color.Orange;
    
                   }
    
                   if (remainTime <= 9)
    
                   {
    
                       this.labRT.ForeColor = Color.Red;
    
                       this.labRT.Text = "0" + remainTime;
    
                   }
    
                   if (remainTime == 59)
    
                       this.labRT.ForeColor = Color.White;
    
                   if (remainTime == 0)
    
                   {
    
                       ParantForm.Close();
    
                   }
    
               }
    
               catch (Exception ex)
    
               {
    
                   LogHelper.WriteLog(this.Name + "timerUC_Tick", ex.Message);
    
               }
    
     
    
           }
    

      

  • 相关阅读:
    hdu 5646 DZY Loves Partition
    bzoj 1001 狼抓兔子 平面图最小割
    poj 1815 Friendship 最小割 拆点 输出字典序
    spoj 1693 Coconuts 最小割 二者取其一式
    hdu 5643 King's Game 约瑟夫环变形
    约瑟夫环问题
    hdu 5642 King's Order
    CodeForces 631C Report
    1039: C语言程序设计教程(第三版)课后习题9.4
    1043: C语言程序设计教程(第三版)课后习题10.1
  • 原文地址:https://www.cnblogs.com/xiangxiong/p/6899757.html
Copyright © 2020-2023  润新知