delphi简单判断程序30秒没有键盘和鼠标动作示例
作者:水悠悠予安
时间:2026-06-29
来源:正软商城
浏览:1
一段Delphi代码通过消息钩子监控鼠标移动和键盘按下事件,利用Timer组件的tag属性作为计数器,每秒自增一次,检测到用户操作时重置为零,当tag值达到30时自动执行程序关闭,实现30秒无操作自动退出功能。
本文目录
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls;
type
TForm1 = class(TForm)
Memo1: TMemo;
Button1: TButton;
Timer1: TTimer;
procedure Timer1Timer(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
procedure AppMessageHandler(var Msg:TMsg;var Handled:Boolean);
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
{ TForm1 }
procedure TForm1.AppMessageHandler(var Msg: TMsg; var Handled: Boolean);
begin
if (msg.message=WM_MOUSEMOVE) or (msg.message=WM_KEYDOWN) then
timer1.tag:=0;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
timer1.tag:=timer1.tag+1;
if Timer1.tag=30 then
close;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
close;
end;
end.
这段代码的逻辑非常清晰。它通过一个全局的消息钩子来监控应用程序的消息队列。一旦捕获到鼠标移动(`WM_MOUSEMOVE`)或键盘按下(`WM_KEYDOWN`)的消息,就立即将Timer的`tag`属性重置为0。而Timer每隔1秒触发一次,每次触发时都会让`tag`值自增1。当`tag`累积到30时,程序就会执行`Close`方法,从而实现30秒无操作自动退出的效果。这个思路的关键就在于,将Timer本身的`tag`属性当成了一个计步器,巧妙地复用了现有组件资源。当用户有操作时,计步器归零,无操作时则持续累加,直到触发阈值。
作者最新文章
动漫共和国在线观看地址及入口
2026-11-04 12:06
立刻MV如何查看立刻MV官方操作指引文档
2026-11-02 14:05
抖音创作平台官网登录入口
2026-11-02 10:38
Xshell连接SSH失败怎么办?5步排查网络、代理与认证问题
2026-10-30 14:30
樱花动漫官方正版官网入口在哪_樱花动漫网址2027最新分享
2026-10-28 19:21
上一篇:
delphi xe 可用的MD5算法
热门文章
更多
精品专题
更多
Mac软件
更多
火山引擎 网页版
Windows/ macOS/ Linux
火山引擎是字节跳动旗下企业级云与AI服务平台。聚焦大模型核心能力,依托字节自研豆包多模态大模型,凭借火山方舟一站式平台,提供模型精调、推理部署、智能应用搭建等全链路服务,结合高性能AI算力,助力各行业快速落地大模型数字化与智能化应用。
















