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

判断软件的闲置时间(使用Application.OnMessage过滤所有键盘鼠标消息)的更多相关文章

  1. 深入delphi编程理解之消息(五)重写(override)dispatch、wndproc方法和Application.OnMessage事件

    dispatch.wndproc是VCL framework在TWinCtronl定义的虚拟方法,下面程序通过重写(override)这两函数拦截WM_LBUTTONDOWN消息,来与Applicat ...

  2. Atitit. 如何判断软件工程师 能力模型 程序员能力模型  项目经理能力模型

    Atitit. 如何判断软件工程师 能力模型 程序员能力模型  项目经理能力模型 这里能力模型的标准化是对工具的使用为基本 工具(ide,语言,类库,框架,软件) 第一步 ::可使用api 类库 框架 ...

  3. 屏幕实时显示键盘鼠标操作软件keycastow,适合做视频教程

    屏幕实时显示键盘鼠标操作软件keycastow,适合做视频教程 学习了:https://www.52pojie.cn/thread-535154-1-1.html 进行键盘按键的屏幕实时显示:

  4. 灵玖软件Nlpir Parser语义智能内容过滤

    Internet是全球信息共享的基础设施,是一种开放和面向 所有用户的技术.它一方面要保证信息方便.快捷的共享;另一方面要防止垃圾信息的传播.网络内容分析是一种管理信 息传播的重要手段.它是网络信息安 ...

  5. 判断网站域名是否被GFW(墙)过滤屏蔽了

    GFW:Greate Firewall Of China中国防火长城: 描述: 1.今天所属的一个域名被告诉不能访问了,赶紧自己测试了一下,发现可以,然后对方试了下说是不行,然后仔细按对方说的一步步操 ...

  6. C#:判断软件运行的环境是否是Pad(PC)

    一.需求:Pad上显示某功能块,PC机上隐藏. 二.方法:从外围设备获取值判断是否是Pad. 三.具体参考代码如下: 1.外围设备值类型如下: public enum ChassisTypes { O ...

  7. centos 6.5系统判断软件是否安装,如果没安装,则直接使用yum安装,并添加启动项

    function install_software(){ software=$1 s=`rpm -qa|grep ${software}` result=$(echo ${s}|grep ${soft ...

  8. 5月22日上课笔记-js属性选择器、过滤选择器、鼠标事件

    一.属性选择器 [attr] 包含属性 [attr=value] 属性值 [attr!=value] 属性值不等于value [attr^=value] 属性值以value开头 [attr$=valu ...

  9. BCB 如何让Application收到SendMessage发送来的消息

    一般,都是通过添加一个ApplicationEvent组件就可以接收到PostMessage发来的消息,那么如何收到SendMessage发来的消息呢? https://stackoverflow.c ...

随机推荐

  1. clear属性来取消浮动

    在非IE浏览器(如Firefox)下,当容器的高度为auto,且容器的内容中有浮动(float为left或right)的元素,在这种情况下,容器的高度不能自动伸长以适应内容的高度,使得内容溢出到容器外 ...

  2. 【t069】奇怪的迷宫

    Time Limit: 1 second Memory Limit: 128 MB [问题描述] Mini现在站在迷宫的原点处,公主在[N,N],为了能最快地到达公主处救出公主,Mini希望能走一条最 ...

  3. Mybatis全面详解——下(学习总结)

    原文地址:https://blog.csdn.net/ititii/article/details/79999481 一.Mybatis关联查询映射 这里采用一个案例来进行分析:(下面的案例都是采用M ...

  4. AE中地图查询方式

    樱木 原文 AE中地图查询方式 地图查询主要有两种查询:空间查询和属性查询 所用到知识点: 1  Cursor(游标)对象 本质上是一个指向数据的指针,本身不包含数据内容,提供一个连接到ROW对象或者 ...

  5. [Node] Using dotenv to config env variables

    Install: npm install dotenv --save For example, we can store the sensitive information or env relate ...

  6. Your algorithm's runtime complexity must be in the order of O(log n).

    Given a sorted array of integers, find the starting and ending position of a given target value. You ...

  7. 【32.70%】【poj 2492】A Bug's Life

    Time Limit: 10000MS Memory Limit: 65536K Total Submissions: 34687 Accepted: 11344 Description Backgr ...

  8. Java 学习(21):Java 实例

    Java 实例 本章节我们将为大家介绍 Java 常用的实例,通过实例学习我们可以更快的掌握 Java 的应用. Java 环境设置实例 //HelloWorld.java 文件 public cla ...

  9. [JS Compose] 5. Create types with Semigroups

    An introduction to concatting items via the formal Semi-group interface. Semi-groups are simply a ty ...

  10. php实现 坐标移动

    php实现  坐标移动 一.总结 一句话总结:伪代码,带函数逻辑,函数这样的方式写算法程序会节约超多的时间. 1.为什么算法题数据输入最好用多组数据输入的方式? 因为都是多组数据测试,而且多组数据输入 ...