2008-09-14 4 views
5

사용자가 시작 -> 종료를 선택할 때 '멋지게 종료'할 Java 응용 프로그램이 있습니다. Runtime.addShutdownHook (...)을 통해 JVM 셧다운 리스너를 사용해 보았습니다 만, UI 요소를 사용할 수 없어서 작동하지 않습니다.Java 응용 프로그램을 Windows에서 제대로 종료하려면 어떻게합니까?

주 응용 프로그램 UI 창에서 종료 처리기를 사용해 보았지만 중단 할 수있는 방법이 없거나 시스템 종료를 중단시킬 수는 없습니다. 종료를 올바르게 처리하려면 어떻게해야합니까?

+0

실무 해결책을 찾았습니까? – Hoto

답변

3

앞서 언급 한 JNI 방식이 효과적 일 수 있습니다.

기본적으로 JNI를 둘러싼 래퍼 인 JNA를 사용하면 더 쉽게 사용할 수 있습니다. 추가 보너스는 일반적으로 원시 JNI보다 빠르며 유지 보수가 용이하다는 것입니다. https://jna.dev.java.net/

Windows에서 서비스처럼 작동하도록하기 때문에 시작 메뉴에서 응용 프로그램을 시작한 경우 여기에서 찾을 수있는 java 서비스 래퍼를 사용할 수 있습니다. http://wrapper.tanukisoftware.org/doc/english/download.jsp

3

내가 아는 한 JNI를 사용하여 Windows WM_QUERYENDSESSION 메시지의 메시지 처리기를 설정해야합니다.

나를 위해 Windows 프로그래밍을 처음 사용하는 경우 새로운 메시지 처리 함수 (here과 같이)를 사용하여 새 클래스의 창을 만들고 메시지 처리기에서 WM_QUERYENDSESSION을 처리해야합니다.

NB : 네이티브 메시지 처리에서 Java 메서드를 호출하기 전에 메시지 처리 스레드에서 JNIEnv :: GetJavaVM (...) 및 JavaVM :: AttachCurrentThread (...)를 사용해야합니다. 암호.

관련 문제