Как я могу определить в приложении Swing, что ПК выключен? - PullRequest
2 голосов
/ 16 сентября 2008

Программы Windows с хорошим поведением должны позволять пользователям сохранять свою работу, когда они выключают компьютер.

Как я могу заставить мое приложение обнаруживать событие завершения работы? Любое решение должно позволять пользователю прерывать выключение, если пользователь выбирает, скажем, «Отмена».

Обычный закрывающий крюк окна Swing не работает и не добавляет закрывающий крюк.

При тестировании методы WindowListener (windowClosing, windowClosed и т. Д.) Не вызываются.

Ответ, который я принял, требует использования специального кода платформы (JNI для регистрации на WM_QUERYENDSESSION). Разве это не ошибка на Swing?

См. http://forums.sun.com/thread.jspa?threadID=481807&messageID=2246870

Ответы [ 4 ]

3 голосов
/ 16 сентября 2008

Написать код JNI в сообщение WM_QUERYENDSESSION. Вы можете получить подробности об этом из документации MSDN или погуглить.

Если вы не хотите писать слишком много кода C ++ для этого, я могу порекомендовать библиотеку JNA , нажмите здесь . Который дает вам некоторые хорошие абстракции Java для кода C.

1 голос
/ 16 сентября 2008
0 голосов
/ 16 сентября 2008

Ищите обработку сигналов в Java. когда Windows закрывается, она отправляет приложению сигнал с просьбой прекратить работу, скорее всего, через sigterm

см. здесь , чтобы узнать больше об этом (я не владелец сайта)

0 голосов
/ 16 сентября 2008

Выше, кажется, лучший ответ.

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...