判断软件的闲置时间(使用Application.OnMessage过滤所有键盘鼠标消息)
2024-09-02 00:39:42
GetLastInputInfo是检测系统输入的,应用到某个程序中不合适!
此问题有二种解法来监控输入消息:
1.用线程级HOOK,钩上MOUSEHOOK与KEYBOARDHOOK
2.在Application.OnMessage中做处理
显然,用第2种方法比较方便!
众所周知,键盘与鼠标消息都是队列消息,需要经过消息队列后经过一些处理,再发往各个WNDPROC。基于这个原理,我们可以在ONMESSAGE中做一下消息处理,即先声明全局变量,用于保存上次输入动作的时间,而后用时间控件来进行定时扫描,用GetTickCount来判断是否超时。
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, AppEvnts, ExtCtrls, StdCtrls;
type
TForm1 = class(TForm)
ApplicationEvents1: TApplicationEvents;
tmr1: TTimer;
edt1: TEdit;
procedure ApplicationEvents1Message(var Msg: tagMSG;
var Handled: Boolean);
procedure tmr1Timer(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
ElapsedTime:Longint;
implementation
{$R *.dfm}
procedure TForm1.ApplicationEvents1Message(var Msg: tagMSG;
var Handled: Boolean);
begin
case Msg.message of
WM_KEYDOWN,WM_LBUTTONDOWN,WM_LBUTTONUP://各种键盘与鼠标消息
begin
ElapsedTime:=GetTickCount;
//Handled:=True;这里不要把Handled设置为True,否则消息就不分发至WNDPROC了
end;
end;
end;
procedure TForm1.tmr1Timer(Sender: TObject);
begin
if GetTickCount- ElapsedTime> then
begin
tmr1.Enabled:=false;
ShowMessage('1分钟软件没有操作了');
end;
end;
end.
参考:http://www.cnblogs.com/key-ok/p/3358918.html
最新文章
- maven编译时如何忽略单元测试
- 在Android中开源类库使用过程中兼容性等问题的讨论
- ASP.NET中的指令:
- SQL Server 2008 表值参数用法
- Echarts动态数据显示
- 《算法4》读书笔记 1.4 - 算法分析(Analysis of Algorithm)
- Android OpenGL ES 开发(四): OpenGL ES 绘制形状
- Thymleaf中th:each标签遍历list如何获取index
- day16-(listener&;filter)
- [USACO13DEC] Optimal Milking
- for循环实例
- finecms设置伪静态后分享到微信不能访问怎么处理
- 解决阿里云安骑士漏洞警告:wordpress WPImageEditorImagick 指令注入漏洞
- python3 中对arrow库的总结(转发)
- JavaWeb应用项目中文乱码的解决
- 《Small Memory Software:Patterns For System With Limited Memory》读书笔记
- ubuntu 下安装配置open-iscsi并自动挂载
- 005-java的Annotation
- shell脚本监控Linux系统性能指标
- JpGraph使用详解
热门文章
- 常用协议(SPI, UART, I2C)
- 【BZOJ 3998】弦论
- 关于idea新建子目录时往父目录名字后叠加而不是树形结构的解决方法(转)
- [Angular HTML] Overwrite input value, String.fromCharCode &; input.selectionStart
- AM335x(TQ335x)学习笔记——Nand&;amp;&;amp;网卡驱动移植
- php课程 8-28 php如何绘制生成显示图片
- P2P网贷第三方托管模式存在5大缺陷,托管机构才是最大赢家
- 【36.86%】【codeforces 558B】Amr and The Large Array
- HTTP协议和HTTPS协议初探
- Hadoop常见异常及其解决方案 分类: A1_HADOOP 2014-07-09 15:02 4187人阅读 评论(0) 收藏