zoukankan      html  css  js  c++  java
  • 获取系统空闲时间

    //定义结构体
    internal struct LASTINPUTINFO
    {
    public uint cbSize;
    public uint dwTime;
    }

    //引入系统API
    [DllImport("User32.dll")]
    private static extern bool GetLastInputInfo(ref LASTINPUTINFO plii);

    /// <summary>
    /// get the system idle time
    /// </summary>
    /// <returns></returns>
    public long getIdleTick()
    {
    LASTINPUTINFO vLastInputInfo = new LASTINPUTINFO();
    vLastInputInfo.cbSize = (uint)Marshal.SizeOf(vLastInputInfo);
    if (!GetLastInputInfo(ref  vLastInputInfo)) return 0;
    return (Environment.TickCount - (long)vLastInputInfo.dwTime)/1000;
    }

    应用时最好单独开启一个线程来计算  不要使用UI线程

    private bool autoClose = false;
    private bool isRun = true;
    Thread monitorSystemFree = null;

    Thread monitorSystemFree = new Thread(StartAutoClose);
    monitorSystemFree.IsBackground = true;
    monitorSystemFree.Start();

    /// <summary>
    /// auto to close window
    /// </summary>
    private void StartAutoClose()
    {
    if (AutoClose)
    {
    while (this.isRun)
    {
    //Get System run ticks
    long idleTicks = getIdleTick();
    // auto close time out : 15 s (1000 is to let the result close to 15 s)
    if (idleTicks >= 15)
    {
    this.isRun = false;

    this.Dispatcher.Invoke(new Action(() =>
    {
    this.Close();
    }), null);
    }
    }
    }
    }

  • 相关阅读:
    第二阶段团队冲刺第二天站立会议
    第二阶段冲刺第一天站立会议
    对身边常用的软件进行评价
    学习进度条
    进度条
    团队冲刺第四天站立会议
    用户模板及场景分析
    团队冲刺第一天战略会议
    团队冲刺第九天
    团队冲刺第八天
  • 原文地址:https://www.cnblogs.com/luohengstudy/p/4171331.html
Copyright © 2011-2022 走看看