【发布时间】:2018-03-19 11:44:24
【问题描述】:
我想记录活动应用程序并保存我活动应用程序的历史记录。我说活动应用程序是因为如果我运行一个应用程序并且它被最小化等,我不会将其视为活动应用程序。 为了让我的问题更清楚,让我们看一下这个例子。 我打开 Firefox 并在网上冲浪 20 分钟。然后我打开一个文本编辑器并开始写作 5 分钟(Firefox 正在运行但我不使用它,因此不应将 Firefox 视为活动应用程序)。所以我应该能够记录以下信息:
Firefox -> 20 minutes
Text editor -> 5 minutes
我想在操作系统(首选 Linux)运行期间跟踪每个使用过的应用程序,并制作一个开源应用程序,说明您使用每个应用程序的程度。
更新:我要记录的应用程序是用户在显示屏上看到并正在使用的应用程序。例如,您可能会更改窗口大小,以使您可以同时看到 Firefox 和文本编辑器(同时在不同的工作空间、级联等),但是您正在输入文本编辑器,因此,文本编辑器是主动申请。换句话说,如果您正在与之交互或者是您正在查看以阅读 pdf、文本等形式的某些内容的最后一个交互应用程序,则该应用程序处于活动状态。与应用程序交互:我的意思是单击、键入、滚动等。
NARROWING : 我唯一想不通的是如何在这些条件下获得活动应用程序。我认为,如果我在当前工作区的显示器上获得可以解决问题的最顶级应用程序,但是,我们有一个属性可以设置为一个窗口(始终在顶部),如果不启用此属性,可能需要获得该属性。我发现this question 可能有助于回答。
使用 Fedora 26,
提前致谢。
【问题讨论】:
-
没有核心 Java 解决方案,因为 Java 被专门编写为尽可能与操作系统无关。对于解决方案,您需要使用 3rd 方库(题外话)或使用通过 JNI / JNA 链接到 Java 的 C/C++ 解决方案。
-
@Martin:在这方面几乎所有语言都比 Java 好。同样,Java 被编写为尽可能远离金属和平台,因此您没有找到所需功能的原因是它不是故意。使用 C/C++ 更好,如果是 Windows,则可能是 C#。
-
太晚了。我已经用完了我的重新开放投票。该死的系统。
-
@Martin 您需要为问题添加更多约束... 那么这是一个 X 应用程序,用户运行连接到显示器并且只能看到该显示器上的应用程序,是吗?
-
我赞成这个问题,因为我需要类似的代码(在 X11 中)。
标签: java c linux operating-system x11