博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
获取系统空闲时间
阅读量:5251 次
发布时间:2019-06-14

本文共 1197 字,大约阅读时间需要 3 分钟。

 

//定义结构体

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

你可能感兴趣的文章
三维变换概述
查看>>
第三次作业
查看>>
vue route 跳转
查看>>
【雷电】源代码分析(二)-- 进入游戏攻击
查看>>
Entityframework:“System.Data.Entity.Internal.AppConfig”的类型初始值设定项引发异常。...
查看>>
Linux中防火墙centos
查看>>
mysql新建用户,用户授权,删除用户,修改密码
查看>>
FancyCoverFlow
查看>>
JS博客
查看>>
如何设置映射网络驱动器的具体步骤和方法
查看>>
ASP.NET WebApi 基于OAuth2.0实现Token签名认证
查看>>
283. Move Zeroes把零放在最后面
查看>>
Visual Studio Code 打开.py代码报Linter pylint is not installed解决办法
查看>>
Python 数据类型
查看>>
S5PV210根文件系统的制作(一)
查看>>
centos下同时启动多个tomcat
查看>>
slab分配器
查看>>
数据清洗
查看>>
【读书笔记】C#高级编程 第三章 对象和类型
查看>>
针对sl的ICSharpCode.SharpZipLib,只保留zip,gzip的流压缩、解压缩功能
查看>>