Delphi中判断当前程序运行过程中长时间无鼠标与键盘操作
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls;
type
TForm1 = class(TForm)
Label1: TLabel;
Timer1: TTimer;
procedure Timer1Timer(Sender: TObject);
procedure FormShow(Sender: TObject);
private
{ Private declarations }
procedure Detect(var Msg:TMsg; var Handled:boolean);
public
{ Public declarations }
//--------------------------------------------------------------------------
// 注释 :定义一变量,用来记录鼠标或键盘无操作记录的时间
//--------------------------------------------------------------------------
flag : integer;
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
{-------------------------------------------------------------------------------
过程名: TForm1.Timer1Timer
功能描述: 在Timer事件里记录无操作时间,并作相应的处理。
参数: Sender: TObject
返回值: 无
-------------------------------------------------------------------------------}
procedure TForm1.Timer1Timer(Sender: TObject);
begin
Inc(flag);
Label1.Caption := IntToStr(flag);
// 在此加上判断条件. 这儿设置的是120秒
if flag>120 then
close;
end;
{-------------------------------------------------------------------------------
过程名: TForm1.FormShow
功能描述: 将系统消息设置为自定义消息。
参数: Sender: TObject
返回值: 无
-------------------------------------------------------------------------------}
procedure TForm1.FormShow(Sender: TObject);
begin
Application.OnMessage:=Detect;
end;
{-------------------------------------------------------------------------------
过程名: TForm1.Detect
功能描述: 消息里处理的事件。如果有鼠标或键盘操作,则将时间标志置为0
参数: var Msg: TMsg; var Handled: boolean
返回值: 无
-------------------------------------------------------------------------------}
procedure TForm1.Detect(var Msg: TMsg; var Handled: boolean);
begin
if (Msg.message=WM_KEYDOWN) or
(Msg.message=WM_MOUSEMOVE) then
flag :=0;
本文来自博客园,作者:{咏南中间件},转载请注明原文链接:https://www.cnblogs.com/hnxxcxg/archive/2010/11/27/2940660.html