2008-09-16 39 views
2

行爲良好的Windows程序需要允許用戶在關閉PC時保存工作。如何從Swing應用程序檢測到PC正在關機?

如何讓我的應用程序檢測到關機事件?任何解決方案應該允許用戶在用戶選擇時中止關閉,比如說「取消」。

正常的Swing窗口關閉掛鉤不起作用,也沒有添加關閉掛鉤。

在測試時,WindowListener(windowClosing,windowClosed等)的方法不會被調用。

我接受的答案需要使用特定於平臺的代碼(JNI來註冊WM_QUERYENDSESSION)。這不是Swing上的錯誤嗎?

看到上面http://forums.sun.com/thread.jspa?threadID=481807&messageID=2246870

+0

您是否使用java.lang.runtime的shutdown hook? – mmattax 2008-09-16 12:56:26

回答

3

寫一些JNI代碼WM_QUERYENDSESSION消息。您可以從MSDN文檔或通過Google搜索獲得詳細信息。

如果你不想寫太多的C++代碼來做到這一點,我可以推薦JNA庫click here。這給了你一些C代碼很好的Java抽象。

0

似乎是更好的答案。

我無法找到關於檢測窗口關閉事件的任何好信息。我想最好的方法是檢測應用程序嘗試關閉的天氣,使用窗口關閉事件等,然後提出問題。

http://www.javalobby.org/java/forums/t17933

0

查找信號在java中處理。當Windows關閉它會發出信號給應用程序要求其終止最有可能是SIGTERM

看到here以瞭解更多內容(我不是網站的所有者)

相關問題