用户在离开计算机锁定功能,GetLastInputInfo计时用户离开电脑及软件在指定时间锁定等...

本文介绍了如何利用Windows API函数GetLastInputInfo结合计时器,来检测用户在电脑上的活动状态。当用户超过指定时间(如30秒)未进行键盘或鼠标操作时,程序会自动触发屏保或锁定。这种方法适用于开发提高系统安全性或优化用户体验的软件功能。
摘要由CSDN通过智能技术生成

GetLastInputInfo

计时键盘、鼠标处于空闲状态的时间,不清楚计时其他电脑I/O设备的空闲状态不?

所以呢,这个函数使用方面很广,可以计时用户离开电脑之后的延展作用,比如屏保和当用户离开时软件自动锁定。我在网上找到一个源码,实现软件在用户未操作电脑到时后自动锁定,见下文:

//注意: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);

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值