El problema que existía es que cancelaba el apagado del sistema, hasta que primero se cerrara la aplicación.
Bien, como esa característica ya la había implementado en otros programas pero en versiones anteriores de VB, creí que podría implementarla mas o menos de alguna forma parecida. Pero no... tuve que experimentar otras cosas diferentes en VB2003, pero no me funcionaban, busque en la MSDN de Microsoft, pero no encontré algo que me sirviera. Así que, haciendo una búsqueda rápida en la red, encontré lo siguiente:
Esta es parte de la implementación, en el evento 'closing' de la forma:
If systemShutdown = False Then
e.Cancel = True
With Me
.WindowState = FormWindowState.Minimized
.Hide()
.tsrIcon.Visible = True
End With
Else
e.Cancel = False
End If
End Sub
Y este es el codigo "clave" para que lo anterior funcione:
Private Shared WM_QUERYENDSESSION As Integer = &H11
Private Shared SystemShutdown As Boolean = False
Protected Overrides Sub WndProc(ByRef m As System.Windows.Forms.Message)
If m.Msg = WM_QUERYENDSESSION Then
'MessageBox.Show("queryendsession: this is a logoff,shutdown, or reboot")
systemShutdown = True
End If
' If this is WM_QUERYENDSESSION, the closing event should be fired inthe base WndProc
MyBase.WndProc(m)
End Sub 'WndProc
Si, si ya se que es realmente simple, y breve la solucion, y es precisamente por eso que quiero dejarlo anotado, que a veces las cosas que pudieran parecer simple y buscamos respuestas complejas, realmente la solucion es simple.
No hay comentarios.:
Publicar un comentario
Y USTED QUE OPINA?