Как я могу определить из приложения Swing, что компьютер выключен?
-
09-06-2019 - |
Вопрос
Хорошо работающие программы Windows должны позволять пользователям сохранять свою работу при выключении компьютера.
Как я могу заставить свое приложение обнаруживать событие завершения работы?Любое решение должно позволять пользователю прервать завершение работы, если пользователь выберет, скажем, "Отмена".
Обычный хук закрытия окна Swing не работает, как и добавление хука завершения работы.
При тестировании методы WindowListener (windowClosing, windowClosed и т.д.) Не вызываются.
Ответ, который я принял, требует использования кода, зависящего от платформы (JNI для регистрации в WM_QUERYENDSESSION ).Разве это не ошибка в Swing?
Видишь http://forums.sun.com/thread.jspa?threadID=481807&messageID=2246870
Решение
Напишите какой-нибудь JNI-код в сообщение WM_QUERYENDSESSION.Вы можете получить подробную информацию об этом из документации MSDN или погуглив ее.
Если вы не хотите писать слишком много кода на C ++ для этого, я могу порекомендовать библиотеку JNA нажмите здесь.Что дает вам несколько хороших абстракций Java для кода на C.
Другие советы
как-мне-заставить-мое-java-приложение-завершать-работу-красиво-в-Windows
Это могло бы нам помочь
Приведенное выше, по-видимому, является лучшим ответом.
Я не могу найти никакой полезной информации об обнаружении событий завершения работы окна.Я думаю, наилучшим возможным методом было бы определить погоду, которую пытается закрыть ваше приложение, используя событие закрытия окна или подобное, а затем задать вопрос.
Поищите обработку сигналов в java.когда Windows закроется, она отправит приложению сигнал с просьбой завершить работу, скорее всего, sigterm
видишь здесь подробнее об этом (я не являюсь владельцем веб-сайта)