我用的是消息,使用Application对象的OnMessage事件,再自定义一个过程来处理鼠标键盘事件,在此事件中改变全局变量的值: procedure TfrmMain.MessageProc(var Msg: TMsg; var Handled: Boolean); { 处理程序的消息,只要接收到鼠标和键盘消息,将锁定时间设为0 } begin with Msg do case Message of WM_LBUTTONDOWN, WM_RBUTTONDOWN, WM_MOUSEMOVE, WM_KEYDOWN, WM_LBUTTONDBLCLK: FTimeCount := 0; end; end; 然后,用一个定时器来判断全局变量的值就可以了。
unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls;type TForm1 = class(TForm) Timer1: TTimer; procedure Timer1Timer(Sender: TObject); procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); procedure FormCreate(Sender: TObject); private { Private declarations } public { Public declarations } end;var Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Timer1Timer(Sender: TObject); begin Application.Terminate; end;procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin Timer1.Enabled:=False; Timer1.Enabled:=True; end;procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin Timer1.Enabled:=False; Timer1.Enabled:=True; end;procedure TForm1.FormCreate(Sender: TObject); begin Timer1.Interval:=600000; end;end.
在OnTimer事件里写代码关闭程序Application.Terminate();在KeyUp,MouseUp事件中激活Timer1
procedure TfrmMain.MessageProc(var Msg: TMsg; var Handled: Boolean);
{ 处理程序的消息,只要接收到鼠标和键盘消息,将锁定时间设为0 }
begin
with Msg do
case Message of
WM_LBUTTONDOWN, WM_RBUTTONDOWN, WM_MOUSEMOVE, WM_KEYDOWN,
WM_LBUTTONDBLCLK: FTimeCount := 0;
end;
end;
然后,用一个定时器来判断全局变量的值就可以了。
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls;type
TForm1 = class(TForm)
Timer1: TTimer;
procedure Timer1Timer(Sender: TObject);
procedure FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Timer1Timer(Sender: TObject);
begin
Application.Terminate;
end;procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
Timer1.Enabled:=False;
Timer1.Enabled:=True;
end;procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
Timer1.Enabled:=False;
Timer1.Enabled:=True;
end;procedure TForm1.FormCreate(Sender: TObject);
begin
Timer1.Interval:=600000;
end;end.