^_^

2010年1月19日星期二

如何实现类似 MSN “若我在X分钟内为非活动状态,则显示为离开”的功能

其实我这里要说的是如何检测“我在X分钟内为非活动状态”。这个“非活动状态”定义为当前用户没有键盘、鼠标输入,不仅仅指当前应用的输入。

Windows中如何获取键盘和鼠标处于空闲状态的时间》有详细描述该功能的实现。包括两个方面:
  1. 对于 Windows 9x 和 Windows NT 4.0 需要利用系统钩子对键盘、鼠标进行监控,文章中有提供源码。
  2. 对于 Windows 2000 及更新的 Windows OS,其实只需要简单的借助 GetLastInputInfo() 来实现。
其实对于第一种状况,我们几乎已经不需要在讨论了,因为这样的 PC 已经很难见到了。对于第二种情况,我写了简单的测试例程,大家可以试试。
#include 
#include "Windows.h"

int main()
{
        LASTINPUTINFO lpi;
        lpi.cbSize = sizeof(lpi);

        while (1)
        {
                int ret = GetLastInputInfo(&lpi);
                printf("%d, idle for %d s.\n", ret, (::GetTickCount()-lpi.dwTime)/1000);
                Sleep(500);
        }
        return 0;
}
本站文章除注明外,均为本站原创
转载请注明文章转载自: 大笨熊乐园 [ https://blog.foolbear.com/?m=0 ]
文章标题: 如何实现类似 MSN “若我在X分钟内为非活动状态,则显示为离开”的功能
文章地址: https://blog.foolbear.com/2010/01/msn-x.html?m=0

没有评论 :

发表评论

Related Posts with Thumbnails