2011-09-24 11 views
15

VMware Workstation hace algo bastante fresco cuando trato de apagado de Windows, mientras que una máquina virtual está en ejecución:apagado evitar que las ventanas con mensaje personalizado

VMWare prevents Windows shutdown with a custom message

Normalmente, nos gustaría ver una "Este programa es la prevención de Windows de cerrar "mensaje en lugar de nuevo" 1 Máquina virtual está en uso ".

¿Cómo hace VMWare esto? No he podido encontrar ninguna API al respecto en Google.

+0

Sé que al usar el comando shutdown en la línea de comandos, se pueden especificar mensajes de apagado personalizados para mostrar, ¿quizás esto está relacionado? – stijn

Respuesta

11

Puede leer todo sobre los cambios introducidos en Vista here. Deberías leer ese artículo muy cuidadosamente.

Las API que está buscando son ShutdownBlockReasonCreate, ShutdownBlockReasonDestroy y ShutdownBlockReasonQuery. Recuerde que estas API solo están disponibles en el servidor Vista/2008. Tendrás que implementar un comportamiento de repliegue en 2000/XP.

Si necesita bloquear el apagado, llame al ShutdownBlockReasonCreate pasando el controlador a la ventana principal y el motivo como una cadena. Esta cadena es lo que se muestra en el diálogo de bloqueo bloqueado, es decir, "1 máquina virtual está en uso" en su captura de pantalla.

Si la operación que bloquea el apagado se completa, llame al ShutdownBlockReasonDestroy.

Tenga en cuenta que todavía debe implementar WM_QUERYENDSESSION para hacer que todas las piezas encajen juntas. Esta es la parte que realmente bloquea el cierre.

En XP también debe responder a WM_ENDSESSION y si su aplicación bloqueó el apagado, es educado mostrar un mensaje que indique por qué. Si no lo hace, entonces el usuario se rasca la cabeza de por qué la computadora está ignorando las instrucciones para apagar.

+1

[No olvide responder a WM_QUERYENDSESSION.] (Http://msdn.microsoft.com/en-us/library/ms700677 (v = vs.85) .aspx) – bzlm

+0

¡Ahh, gracias! Los encontré a través de Google, pero la documentación no hace mucho para señalar que afecta la interfaz de usuario, así que pensé que el mensaje se mostraría, por ejemplo, usando un cuadro de mensaje. – foxy

+1

La clave es el artículo discursivo al que me he vinculado en la primera oración de la respuesta. Esa es tu guía para manejar el apagado. La documentación de la API siempre es un poco más escueta. –

Cuestiones relacionadas