@H_404_3@解决方法
原文链接:https://www.f2er.com/delphi/103581.html
为了跟踪用户的空闲时间,您可以钩住键盘和鼠标活动。但是请注意,安装系统范围的消息挂钩是非常有侵入性的事情,如果可能的话应该避免这种情况,因为它需要将钩子DLL加载到所有进程中。
另一个解决方案是使用GetLastInputInfo
API函数(如果您的应用程序在Win2000(及以上)机器上运行)。
GetLastInputInfo检索最后输入事件的时间(以毫秒为单位)(当接收到最后检测到的用户活动时,无论是从键盘还是鼠标)。
这是一个简单的例子。 SecondsIdle函数返回一秒钟,没有用户活动(在TTimer组件的OnTimer事件中调用)。
~~~~~~~~~~~~~~~~~~~~~~~~~ function SecondsIdle: DWord; var liInfo: TLastInputInfo; begin liInfo.cbSize := SizeOf(TLastInputInfo) ; GetLastInputInfo(liInfo) ; Result := (GetTickCount - liInfo.dwTime) DIV 1000; end; procedure TForm1.Timer1Timer(Sender: TObject) ; begin Caption := Format('System IDLE last %d seconds',[SecondsIdle]) ; end;