程序未使用一段时间后自动关机

Yaz*_*eti 3 delphi winapi delphi-xe

我们有一个程序,我们正在用Delphi XE编写.我有个问题 :

如果程序在我们设置为参数的持续时间内未使用,则应自动返回到输入屏幕.所以像Windows一样,必须有像鼠标和键盘这样的控件.你能帮帮我吗?

谢谢.

Dav*_*nan 7

定期打电话GetLastInputInfo.这将返回上次输入事件的滴答计数.然后将输入事件的滴答计数与当前滴答计数之间的差异与超时进行比较.

这种方法的缺点是你必须处理具有32位Windows滴答计数的49天翻转问题.作为替代方案,您可以选择安装系统挂钩来监视键盘和鼠标事件.这将允许您避免49天翻转问题,但实施起来要复杂得多.

  • 更好的解决方案是使用应用程序锁定超时设置计时器.当它到期时,计算当前滴答计数和`GetLastInputInfo`之间的差异.如果该值至少与超时一样大,则锁定应用程序.否则,使用超时和自上次输入以来经过的时间之间的差异重新启动计时器.时钟翻转也不是问题:如果`GetTickCount`返回一个小于上一个输入的值,则时钟翻转,并且需要调整差值的计算. (4认同)