首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > Windows Mobile >

C# 怎么 获得 WM 系统闲置时间

2012-03-13 
C# 如何 获得 WM 系统闲置时间?C# 如何 获得 WM 系统闲置时间?      这段时间想写一个锁屏的程序.. 所以用

C# 如何 获得 WM 系统闲置时间?
C# 如何 获得 WM 系统闲置时间? 
   
  这段时间想写一个锁屏的程序.. 所以用到了这个.. 具体想法是: 获得系统的闲置时间.. 如果这个时间超过了1分钟..就自动运行 我的锁屏程序..

  在网上找了好久. 无果. 希望 这里有前辈帮兄弟一把~~ 多谢!

  有些资料上面提到 调用 coredll.dll 里的 Getidletime() 来得到闲置时间... 但我发现这个函数好像是用来获得CPU的闲置时间的... 使用的时候不管等多久.只返回0.

  高手们 专家们.. 个人觉得这个问题应该不是很难解决吧.. 因为网上不少WM程序都会用到的...比如 : 让背景灯在闲置一定时间后关闭.. 等等... 


[解决办法]
class MouseKeyBoardOperate
{
/// <summary>
/// 创建结构体用于返回捕获时间
/// </summary>LayoutKind.Sequential 用于强制将成员按其出现的顺序进行顺序布局。
[StructLayout(LayoutKind.Sequential)]
struct LASTINPUTINFO
{
/// <summary>
/// 设置结构体块容量
/// </summary>MarshalAs属性指示如何在托管代码和非托管代码之间封送数据。
[MarshalAs(UnmanagedType.U4)]
public int cbSize;

/// <summary>
/// 抓获的时间
/// </summary>
[MarshalAs(UnmanagedType.U4)]
public uint dwTime;
}

static LASTINPUTINFO vLastInputInfo;
public MouseKeyBoardOperate()
{
vLastInputInfo = new LASTINPUTINFO();
}

[DllImport("user32.dll")]
private static extern bool GetLastInputInfo(ref LASTINPUTINFO plii);
/// <summary>
/// 获取键盘和鼠标没有操作的时间
/// </summary>
/// <returns>用户上次使用系统到现在的时间间隔,单位为秒</returns>
public static long GetLastInputTime()
{
//LASTINPUTINFO vLastInputInfo = new LASTINPUTINFO();
vLastInputInfo.cbSize = Marshal.SizeOf(vLastInputInfo);
if (!GetLastInputInfo(ref vLastInputInfo))
{
return 0;
}
else
{
long count = Environment.TickCount - (long)vLastInputInfo.dwTime;
long icount = count / 1000;
return icount;
}
}
}

热点排行