You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Delphi XE开发程序:闲置指定时长自动返回输入界面求助

嘿,这个需求我之前在Delphi XE项目里落地过,核心就是借助Windows系统API来监测键鼠活动,再配合定时器判断闲置时长。下面给你一步步拆解可行的实现方案:

核心实现思路

我们要用到Windows的GetLastInputInfo API,它能获取系统最后一次键鼠输入的时间戳。通过计算当前系统运行时间与这个时间戳的差值,就能得到程序的闲置时长。当这个时长超过设定阈值时,触发切换到输入界面的逻辑即可。

具体代码实现步骤

1. 声明Windows API及相关结构

在你的主Form的interface部分(或者单独的单元里)声明需要的API和结构,Delphi XE需要正确匹配Windows的类型定义:

type
  LASTINPUTINFO = record
    cbSize: DWORD;
    dwTime: DWORD;
  end;

function GetLastInputInfo(var plii: LASTINPUTINFO): BOOL; stdcall; external user32.dll;

2. 添加定时器组件

在主Form上拖一个TTimer组件(命名为IdleTimer),把它的Interval属性设为1000(也就是每秒检查一次,你可以根据精度需求调整)。

3. 编写闲置检测逻辑

在定时器的OnTimer事件里编写核心检测代码:

procedure TMainForm.IdleTimerTimer(Sender: TObject);
var
  LII: LASTINPUTINFO;
  IdleTime: DWORD;
  IdleThreshold: DWORD; // 可配置的闲置阈值,单位毫秒
begin
  // 初始化结构,这步很关键,不设置cbSize会导致API调用失败
  LII.cbSize := SizeOf(LASTINPUTINFO);
  
  if GetLastInputInfo(LII) then
  begin
    // 计算闲置时长:当前系统运行时间 - 最后一次输入时间
    IdleTime := GetTickCount - LII.dwTime;
    
    // 这里替换成你的设定参数,比如5分钟就是5*60*1000=300000
    IdleThreshold := 300000; 
    
    if IdleTime >= IdleThreshold then
    begin
      // 先关闭定时器,避免重复触发切换逻辑
      IdleTimer.Enabled := False;
      
      // 切换到输入界面,这里假设你的输入界面是TInputForm
      if not InputForm.Visible then
      begin
        InputForm.BringToFront;
        InputForm.Show;
        Self.Hide; // 隐藏当前主界面,根据你的界面逻辑调整
      end;
      
      // 如果需要在输入界面继续监测闲置,可以重新启用定时器
      // IdleTimer.Enabled := True;
    end;
  end;
end;

4. 初始化定时器

在主Form的OnCreate事件里启用定时器,确保程序启动后就开始监测:

procedure TMainForm.FormCreate(Sender: TObject);
begin
  IdleTimer.Enabled := True;
end;
额外注意事项
  • 系统时间溢出问题:GetTickCount会在系统运行49.7天后溢出归零,如果你的程序需要长期连续运行,可以改用GetTickCount64(注意此时LASTINPUTINFO.dwTime需要转换为UInt64类型);
  • 可配置阈值:建议把闲置阈值做成可配置项,比如从INI文件或数据库读取,方便后续调整;
  • 界面切换逻辑:根据你的程序架构调整界面切换代码,比如如果输入界面是模态框,就用InputForm.ShowModal,如果是非模态就用Show;
  • 重置监测:当用户在输入界面进行操作后,GetLastInputInfo会自动更新最后输入时间,所以定时器下次检查时闲置时长会自动重置,不需要额外处理。

内容的提问来源于stack exchange,提问作者ixirPOS

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 08:42:55