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;
|
请发表评论