获取鼠标与键盘空闲时间

在做电子地图时,客户提到一个需求,要求当鼠标移动到地图的某个位置时,显示地图位置的相关信息。在地图上OnMouseMove中写的话,效率太低,所以想了一个办法,当光标在某个位置停留达到一定时间(如200毫秒)时,再进行一次检索,以便提高效率。

以下是获取空闲时间的代码,主要用到了GetLastInputInfo,关于这个API的用法,可以参考

http://baike.baidu.com/link?url=mujG74H8KaH5fnAlIsItz3r2EZWQd1CvVt2x2B_wHlsGYfra7XbBa_BcvVrwj2YPAWtyvLQ6CdVH2e2Qa38FOq

使用前记得初始化结构体TLastInputInfo,并给cbSize赋值,否则函数将返回False

function GetIdleTime: Cardinal;
var
  pill: TLastInputInfo;
begin
  ZeroMemory(@pill, SizeOf(pill));
  pill.cbSize := SizeOf(pill);
  GetLastInputInfo(pill);
  Result := GetTickCount - pill.dwTime;
end;

by lin557

原文地址:https://www.cnblogs.com/lin557/p/3636158.html