使用java windows服务捕获windows事件
我想通过 Windows 服务捕获锁定/解锁/启动/关闭/注销和登录事件,然后我想为每个事件触发一个函数,以便我可以捕获事件发生的时间。
我想通过 Windows 服务来完成此操作,这样我就不需要手动运行该程序。我想通过java语言来运行这个程序。
I want to capture lock/unlock/start/shutdown/log off and log on events through a windows service and then I want to fire a function for each event so that I can capture the time when Event occured.
I want to do this through a windows service so that I need not run the program manually. And I want to run this program through java language.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
看起来您需要使用 JNA 并使用本机 Windows 调用编写捕获代码。
有一个类 java.awt.Robot这恰恰相反——模拟操作系统事件,但我不知道如何在纯Java中捕获事件。
Looks like you will need to use JNA and write the capture code with native Windows calls.
There is a class java.awt.Robot that does the reverse -- simulating OS events but I am not aware of the way to capture events in pure Java.
在 C# 中,这非常简单。我可以向您展示 C# 代码,如果您想使用 Java 作为语言,您可以将其转换为 Ja.Net。 (如果你真的想使用 JVM,这并没有多大帮助)。
在程序的 Main 方法中将 CanHandleSessionChangeEvent 属性设置为 true:
在服务实现中重写 OnSessionChange 事件,您可以在其中转储有关用户登录/注销和会话连接/断开连接的信息
注册服务,启动它并查看事件日志中的记录。
In C# it is pretty straightforward. I can show you code in C#, you can then convert it to Ja.Net if you want to use Java as a language. (if you actually want to use JVM, this won't help as much though).
Inside your program Main method set CanHandleSessionChangeEvent property to true:
in service implementation override OnSessionChange event, where you can dump information on user logon/logoff and session connect/disconnect
Register service, start it up and see records in event log.