获取系统空闲时间

//定义结构体
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);
}
}
}
}

时间: 2024-10-11 08:33:21

获取系统空闲时间的相关文章

系统空闲时间判断&amp;命名验证

一.系统空闲时间判断 需要一个自动登录注销的功能,当鼠标移动和或者键盘输入的时候认为当前用户在线,否则过了设置时间就自动退出.好在前辈们留下了这样的一个类: MouseKeyBoardOperate: using System; using System.Runtime.InteropServices; namespace SCADA.RTDB.Framework.Helpers { /// <summary> /// Class MouseKeyBoardOperate /// </s

获取系统空闲端口

端口取值范围 以下搜自互联网 一般用到的是1到65535,其中0不使用,1-1023为系统端口,也叫BSD保留端口;1024-65535为用户端口,又分为: BSD临时端口(1024-5000)和BSD服务器(非特权)端口(5001-65535). 0-1023: BSD保留端口,也叫系统端口,这些端口只有系统特许的进程才能使用; 1024-5000: BSD临时端口,一般的应用程序使用1024到4999来进行通讯; 5001-65535: BSD服务器(非特权)端口,用来给用户自定义端口. 常

JavaScript - 获取系统当前时间

获取系统当前时间 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>test08.html</title> <script type="text/javascript"> function showTime(){ var today=new Date(); var year=t

net获取系统当前时间 (转载)

net获取系统当前时间 (2011-06-17 13:26:10) 转载▼ 标签: it 分类: 我的实战 24小时制: DateTime dt = DateTime.Now; string dt24 = dt.ToString("yyyy-MM-dd HH:mm:ss"); 12小时制: DateTime dt = DateTime.Now; string dt12 = dt.ToString("yyyy-MM-dd hh:mm:ss"); H的大小写决定 如果是

java 获取系统当前时间并格式化

java 获取系统当前时间并格式化 CreateTime--2018年5月9日11:41:00 Author:Marydon 实现方式有两种 import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; /** * 获取系统当前时间 * @descrition 使用Calendar实现 * @param format * @return */ public String getSysdat

C++获取系统当前时间(精确到微秒)

获取系统当前时间 在调试.日志输出.代码优化时,我们常常需要获得系统的时间.在一些性能要求高的代码优化时,对时间的精确度还比较高.在网上找不高质量的代码,便自己研究了一下,代码如下(能满足跨平台的要求,单位精确到微秒): #ifdef _WIN32 #include <windows.h> #else #include <time.h> #endif // _WIND32 // 定义64位整形 #if defined(_WIN32) && !defined(CYGW

python脚本——获取系统当前时间与前一天的时间

python脚本中很多时候需要自动获取系统的当前时间和前一日的时间,如果为了获得前一日的时间,只是单纯的取出当前的系统时间(字符串类型),转为整型之后减1,再转换为字符串类型,是不可行的,当月初的时间将会出现0天,比如12月1日会变成12月0日,合理的做法应当让其自动向前推一天. 如下: 1.python里获取当前时间有一个time属性import timeTIME_NOW = time.strftime('%Y%m%d') 或TIME_NOW = time.strftime("%Y%m%d&q

MFC获取系统当前时间

1.使用CTime类 CString str; //获取系统时间 CTime tm; tm=CTime::GetCurrentTime(); str=tm.Format("现在时间是%Y年%m月%d日 %X  %H:%M:%S"); MessageBox(str,NULL,MB_OK); %a:周的英文缩写形式. %A:周的英文全名形式. %b: 月的英文缩写形式. %B:月的英文全名形式. %c: 完整的日期和时间. %d:十进制形式的日期(01-31). %H:24小时制的小时(0

php 无法正确获取系统当前时间的解决办法

今天捣鼓一个统计系统时让用户自动录入用户信息,后台使用PHP的date()函数来获取系统时间,发现时间跟当前时间对不上,后来是因为PHP默认的时区是UTC,应该将其时区设置为北京时间. 方法一:修改php.ini文件   查找date.timezone,找到date.timezone ="UTC", 将其改为date.timezone ="PRC",若date.timezone左边有分号,要将该分号去掉. 方法二:使用date_default_timezone_se