문제

제대로 작동하는 Windows 프로그램은 사용자가 PC를 종료할 때 작업 내용을 저장할 수 있도록 허용해야 합니다.

내 앱이 종료 이벤트를 감지하도록 하려면 어떻게 해야 하나요?모든 솔루션은 사용자가 "취소"라고 선택한 경우 종료를 중단할 수 있도록 허용해야 합니다.

일반적인 Swing 창 닫기 후크는 작동하지 않으며 종료 후크도 추가하지 않습니다.

테스트 시 WindowListener의 메서드(windowClosing,windowClosed 등)가 호출되지 않습니다.

내가 수락한 답변에는 플랫폼별 코드(WM_QUERYENDSESSION에 등록하기 위한 JNI)를 사용해야 합니다.이것은 Swing의 버그가 아닌가?

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

도움이 되었습니까?

해결책

WM_QUERYENDSESSION 메시지에 JNI 코드를 작성합니다.이에 대한 자세한 내용은 MSDN 설명서나 인터넷 검색을 통해 얻을 수 있습니다.

이 작업을 수행하기 위해 너무 많은 C++ 코드를 작성하고 싶지 않다면 JNA 라이브러리를 추천할 수 있습니다. 여기를 클릭하세요.C 코드에 대한 멋진 Java 추상화를 제공합니다.

다른 팁

위의 답변이 더 나은 것 같습니다.

창 종료 이벤트 감지에 대한 좋은 정보를 찾을 수 없습니다.가능한 가장 좋은 방법은 창 닫기 이벤트 등을 사용하여 응용 프로그램이 닫으려고 하는 날씨를 감지한 다음 질문하는 것입니다.

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

Java에서 신호 처리를 찾으십시오.Windows가 닫힐 때 응용 프로그램에 신호를 보내어 아마도 sigterm을 종료하도록 요청합니다.

보다 여기 이에 대한 자세한 내용은 (저는 웹사이트의 소유자가 아닙니다)

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top