判断电脑待机

来源:互联网 发布:cnc编程学徒 编辑:程序博客网 时间:2024/04/30 01:38

/************************************************************************/  
/* 说明:  
调用函数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);   

原创粉丝点击