GetLastInputInfo函数

GetLastInputInfo函数

  • 检索上次输入事件的时间。

原型

BOOL WINAPI GetLastInputInfo(
  _Out_ PLASTINPUTINFO plii
);

参数

plii [out]

类型:PLASTINPUTINFO
指向LASTINPUTINFO结构的指针,用于接收最后一个输入事件的时间。

返回值

类型:BOOL
如果函数成功,返回值为非零。
如果函数失败,返回值为零。

备注

此功能对于输入怠速检测非常有用。 但是,GetLastInputInfo不提供跨所有正在运行的会话的系统范围的用户输入信息。 相反,GetLastInputInfo仅为调用该函数的会话提供会话特定的用户输入信息。
收到最后一个输入事件时的计时计数(见LASTINPUTINFO)不能保证是增量计数。 在某些情况下,该值可能小于先前事件的滴答计数。 例如,这可能是由原始输入线程和桌面线程之间的时间间隔或由SendInput引发的事件引起的,SendInput提供自己的tick计数。

包含库

Minimum supported clientWindows 2000 Professional [desktop apps only]
Minimum supported serverWindows 2000 Server [desktop apps only]
HeaderWinuser.h (include Windows.h)
LibraryUser32.lib
DLLUser32.dll

Example

/************************************************************************/
/* 说明:
调用函数GetLastInputInfo()以后, 结构成员lpi.dwTime 中的值并非上次输入事件
发生以后的毫秒数。而是上次输入事件发生时的系统运行时间。相当于上次输入事件
发生时执行了lpi.dwTime=::GetTickCount()。
::GetTickCount()-lpi.dwTime才是上次输入事件发生以后的毫秒数。
*/
/************************************************************************/
//注意:windows2000以上系统才支持函数GetLastInputInfo()因此有可能需要在StdAfx.h中加上如下语句:
#define _WIN32_WINNT 0x0500
//或者:
#ifdef _WIN32_WINNT 
#undef _WIN32_WINNT 
#endif 
#define _WIN32_WINNT 0x0500 

//首先定义一个计时器计时事件的定义
#define  GETLASTINPUTINFO  109

//然后写一个Time计时器(具体计时器的生成步骤就不在叙述)

//1、在程序初始化的时候调用
m_uGetLastInputInfo = SetTimer(GETLASTINPUTINFO, 500, NULL);//设置获取键盘和鼠标处于空闲状态的时间的计时器


//2、处理函数
void CNetAppSoftDlg::OnTimer(UINT nIDEvent)
{
    LASTINPUTINFO lpi;
    DWORD dwTime = 0;

    switch(nIDEvent)
    {
    case GETLASTINPUTINFO://zhouzx 获取键盘和鼠标处于空闲状态的时间

        lpi.cbSize = sizeof(lpi);
        GetLastInputInfo(&lpi);//关于此windows API接口的介绍,参见同文件夹下的文档
        dwTime = ::GetTickCount()-lpi.dwTime;

        if (dwTime >= 30000)//30秒
        {
            if (m_uGetLastInputInfo)
            {
                KillTimer(GETLASTINPUTINFO);
            }
            OnBnClickedButtonLock();
        }
        break;
    default:
        break;
    }
    CDialog::OnTimer(nIDEvent);
}

//3、在软件解锁后的地方重新开始新的计时
m_uGetLastInputInfo = SetTimer(GETLASTINPUTINFO, 500, NULL);

//4、在推出软件的时候,如果计时器没有停止,要关闭计时器
if (m_uGetLastInputInfo)
{
    //结束获取键盘和鼠标处于空闲状态的时间定时器
    KillTimer(GETLASTINPUTINFO);
}
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值