Как я могу определить из приложения Swing, что компьютер выключен?

StackOverflow https://stackoverflow.com/questions/71842

  •  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.

Другие советы

Приведенное выше, по-видимому, является лучшим ответом.

Я не могу найти никакой полезной информации об обнаружении событий завершения работы окна.Я думаю, наилучшим возможным методом было бы определить погоду, которую пытается закрыть ваше приложение, используя событие закрытия окна или подобное, а затем задать вопрос.

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

Поищите обработку сигналов в java.когда Windows закроется, она отправит приложению сигнал с просьбой завершить работу, скорее всего, sigterm

видишь здесь подробнее об этом (я не являюсь владельцем веб-сайта)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top