gpt4 book ai didi

java - 如何使用在 Windows 上运行的 Java 服务检测用户 Activity ?

转载 作者:可可西里 更新时间:2023-11-01 13:26:45 25 4
gpt4 key购买 nike

我的目标是使用 Java 创建一个系统监控应用程序。我想知道用户何时在 Windows PC 上进行 Activity 。结果将是这样的:

8:00 - 8:15 Activity

9:12 - 10:29 Activity

12:24 - 15:34 Activity

我对任何其他信息(按下哪个键、使用的应用程序等)不感兴趣。仅用户 Activity 。

这在 Java 中甚至可能吗?我计划将我的 Java 应用程序作为服务运行。但至于在用户使用计算机时获取事件,我不知道从哪里开始。


[编辑] 进一步说明:我对 Activity 的细节不感兴趣,只对用户移动了鼠标或按下了某个键感兴趣。我不在乎按下了哪个键,只要我知道在应用程序的某个地方按下了一个键即可。除了按键和鼠标移动之外,我也不关心任何其他 Activity (例如,如果 USB key 插入 USB 端口,我不感兴趣)。

最佳答案

您无法直接从服务监控用户 Activity 。该服务将在与用户 Activity 不同的窗口站中运行,因此无法挂接到该 Activity (除非通过需要用 C 编写的过滤器驱动程序)。

因此,您需要一个在用户桌面上运行并连接到键盘和鼠标 Activity 的客户端应用程序。您可以通过两次调用 Windows API SetWindowsHookEx 来做到这一点(用于低级键盘和鼠标 Hook )使用 JNI。为了监视 Activity ,应用程序需要处理键盘和鼠标 Hook 以获取消息。

您可以通过向注册表的运行键添加一个条目来启动应用程序作为自动启动,或者您可以让您的服务监控 session 日志事件和 launch the application从中。然后用户 session 应用程序可以自己处理信息或通过管道或套接字将其传递给服务。

关于java - 如何使用在 Windows 上运行的 Java 服务检测用户 Activity ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/667233/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com