sirve setresizable que para false create java windows shutdown

java - create - setresizable false para que sirve



¿Cómo puedo hacer que mi aplicación Java cierre bien en Windows? (2)

Tengo una aplicación Java que quiero apagar "muy bien" cuando el usuario selecciona Inicio-> Apagar. He intentado usar escuchas de apagado de JVM a través de Runtime.addShutdownHook (...) pero esto no funciona, ya que no puedo usar ningún elemento de IU.

También intenté usar el controlador de salida en la ventana de la IU de la aplicación principal, pero no tengo forma de pausar o detener el cierre por lo que puedo decir. ¿Cómo puedo manejar el cierre muy bien?


El enfoque de JNI mencionado anteriormente probablemente funcionará.

Puede usar JNA, que básicamente es un envoltorio alrededor de JNI para que sea más fácil de usar. Una ventaja adicional es que (en mi opinión, al menos) generalmente es más rápido y más fácil de mantener que el JNI sin formato. Puede encontrar JNA en https://jna.dev.java.net/

Si recién está iniciando la aplicación en el menú de inicio porque está intentando hacer que se comporte como un servicio en Windows, puede usar el contenedor de servicios de Java que se encuentra aquí: http://wrapper.tanukisoftware.org/doc /english/download.jsp


Por lo que sé, necesitas comenzar a usar JNI para configurar un manejador de mensajes para el mensaje Windows WM_QUERYENDSESSION .

Para hacer esto (si eres nuevo en la programación de Windows como yo) necesitarás crear una nueva clase de ventana con una nueva función de manejo de mensajes (como se describe aquí ) y manejar WM_QUERYENDSESSION desde el manejador de mensajes.

NB: Necesitará usar JNIEnv :: GetJavaVM (...) y luego JavaVM :: AttachCurrentThread (...) en el hilo de manejo de mensajes antes de poder llamar a cualquier método Java desde su código de manejo de mensajes nativo.