如何使用在Windows上运行的Java服务检测用户活动?
我的目标是使用
Java创建系统监视应用程序.我想知道用户何时在Windows PC上进行活动.结果将是这样的:
8:00 – 8:15活动 9:12 – 10:29活动 12:24 – 15:34活动 我对任何其他信息(按下哪个键,使用应用程序等)不感兴趣.只有用户活动. 这在Java中甚至可能吗?我计划将我的java应用程序作为服务运行.但至于在用户使用计算机时获取事件,我不知道从哪里开始. [编辑]进一步澄清:我对活动的细节不感兴趣,只是用户移动了鼠标或按了一个键.我不关心按下哪个键,只要我知道某个键在某个应用程序中被按下了.除了按键和鼠标移动之外,我也不关心任何其他活动(例如,如果在USB端口中插入USB密钥,我不感兴趣). 解决方法
您无法直接从服务监控用户活动.该服务将在与用户活动不同的窗口站中运行,因此无法挂钩该活动(除非通过需要用C编写的过滤器驱动程序).
因此,您将需要一个在用户桌面上运行的客户端应用程序,并挂钩键盘和鼠标活动.您可以通过使用JNI两次调用Windows API SetWindowsHookEx(用于低级键盘和鼠标挂钩)来实现.要监视活动,应用程序将需要处理消息的键盘和鼠标挂钩. 您可以通过向注册表的Run键添加条目来启动应用程序作为自动启动,也可以让您的服务监视器用于事件的会话日志和launch the application.然后,用户会话应用程序可以自己处理信息,也可以通过管道或套接字将其传递给服务. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |