【发布时间】:2016-03-18 11:42:28
【问题描述】:
我需要检测空闲时间,时间由于用户在他们的机器中输入了任何内容,我之前只为 Windows 制作了这个应用程序,这个功能非常有效:-
function IdleTime: DWord;
var
LastInput: TLastInputInfo;
begin
LastInput.cbSize := SizeOf(TLastInputInfo);
GetLastInputInfo(LastInput);
Result := (GetTickCount - LastInput.dwTime) DIV 1000;
end;
但是,此功能不适用于多设备应用程序(据我所知)。我已经搞砸了一段时间,并进行了一些严格的谷歌搜索,但无济于事。
目标操作系统是 OS X 和 Windows。
【问题讨论】:
-
GetLastInputInfo适用于整个用户会话 - 这就是您要找的吗?不仅是您的应用程序,还有任何用户对设备上任何应用程序的输入? -
如果是,我认为 FMX 没有为此准备好任何东西。对于 OSX/Win,我希望您需要有条件地使用 WinAPI 来执行此操作,而对于 OSX 可能需要使用
ioreg。这里有一个 shell 脚本示例:stackoverflow.com/a/17966890/327083 -
J,确切地说,我想检测某人何时离开他们的机器 X 时间,在此期间没有输入。我去看看,谢谢:)
-
移除了 pascal 标记。除非您能告诉我们您正在使用什么普通的旧 Pascal 编译器来执行多设备应用程序,否则 Delphi 或 C++ Builder 将是这里唯一适用的语言标签。请不要随意添加标签,因为其中包含熟悉的单词;这里的标签有特定的含义。如果您不确定标签是否适用,请阅读其说明。如果您仍然不确定它是否适用,请不要使用它。
-
如果您的目标是 osx,显然您的 Delphi 版本不是 2010。我已将标签更新为 Delphi Seattle。如果我错了,请纠正我。
标签: macos delphi delphi-10-seattle