Pregunta

Tengo una aplicación Java que quiero apagado 'muy bien' cuando el usuario selecciona Inicio->Apagar.He intentado usar la JVM de apagado de los oyentes a través de la ejecución.addShutdownHook(...) pero esto no funciona como yo no puede usar ninguna de elementos de interfaz de usuario de la misma.

También he probado a utilizar la salida de controlador en mi principal aplicación de interfaz de usuario de la ventana, pero no tiene forma de pausar o detener el cierre como lo que puedo decir.¿Cómo puedo llevar a cabo el apagado bien?

¿Fue útil?

Solución

El anteriormente mencionado JNI enfoque es probable que funcione.

Usted puede utilizar JNA que es básicamente un contenedor de JNI para hacer más fácil su uso.Una ventaja añadida es que (en mi opinión al menos) generalmente es más rápido y más fácil de mantener que los crudos JNI.Usted puede encontrar JNA en https://jna.dev.java.net/

Si usted apenas está comenzando la aplicación en el menú inicio porque usted está tratando de hacer que se comporte como un servicio en windows, puede utilizar el java service wrapper que se encuentra aquí:http://wrapper.tanukisoftware.org/doc/english/download.jsp

Otros consejos

Como yo sé que usted necesita para comenzar a usar JNI para configurar un mensaje de controlador para Windows WM_QUERYENDSESSION mensaje.

Para hacer esto (si eres nuevo en la programación en Windows como en mi caso, tendrás que crear una nueva clase de ventana con un mensaje nuevo tratamiento de función (como se describe aquí) y manejar las WM_QUERYENDSESSION desde el controlador de mensaje.

NB:Usted necesitará utilizar el JNIEnv::GetJavaVM(...) y, a continuación, JavaVM::AttachCurrentThread(...) en el tratamiento de los mensajes del hilo antes de llamar a cualquier Java los métodos de su primer mensaje de código de control.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top