设为首页 | 收藏本页
登陆您的帐号 | 免费注册帐号
全部栏目 > 计算机 > 软件 > 人工智能
下一篇上一篇 首页图文展示(无图)

软件在指定时间间隔内无鼠标移动键盘点击等动作自动锁定的实现

发布人:hy58
发布日期:2015-06-06 10:12:05
刷新日期:2015-06-06 10:12:42
回复或评论:0
阅览:342
/************************************************************************/     
    /* 说明:     
    调用函数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) 暂无回帖


打印 收藏 关闭窗口 下一篇上一篇