在Java内置的Windows服务中捕获Windows关闭,注销和重启?

时间:2011-08-01 11:39:45

标签: java winapi

有没有办法在用Java构建的Windows服务中捕获Windows注销或/和关闭事件?

我想在Windows服务中捕获Windows事件,捕获后我想发送邮件。

2 个答案:

答案 0 :(得分:0)

我认为你没有纯Java解决方案。

我可以看到两种方式。

您可以将您的流程作为Windows服务运行。因此,您可以假设如果它正在关闭,它会与关闭进程的操作系统一起发生。它不是100%正确,而是相对简单。

另一种方法是找到一些在操作系统停机时开始尝试对进程进行轮询的进程。或者,您可以使用WMI个事件。要从Java连接到WMI,您可以使用以下之一:JaWinJ-integraJ-interop或在VBScript或JScript中创建自己的WMI脚本,并使用CScript从Java运行它。

答案 1 :(得分:0)

您可以通过WM_QUERYENDSESSION以常规用户模式代码通知您。但是,您需要使用JNI并创建一个窗口,您可以使用该窗口关联WndProc以接收此消息。