Impedir que se cierre la sesión de Windows

1913 vistas

Para ello tendremos que añadir las siguientes líneas de código en nuestra clase, lo que permitirá detectar el intento de cierre de sesión y anularlo:



vbnet
  1.   ' Mensaje de Windows QueryEndSession
  2.     Private Const WM_QUERYENDSESSION As Integer = &H11
  3.  
  4.     ' flag que indica si la sesión se va a cerrar
  5.     Private _systemShutdown As Boolean = False
  6.  
  7.     ' redefinición de la función virtual WndProc
  8.     Protected Overrides Sub WndProc(ByRef m As System.Windows.Forms.Message)
  9.  
  10.         If m.Msg = WM_QUERYENDSESSION Then
  11.             _systemShutdown = True
  12.  
  13.         End If
  14.         MyBase.WndProc(m)
  15.     End Sub
  16.  
  17.     ' Handler evento closing
  18.     Private Sub Form1_Closing(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles MyBase.Closing
  19.         ' si se ha enviado el mensaje de cierre, lo anulamos
  20.         If _systemShutdown Then
  21.  
  22.             e.Cancel = True
  23.             _systemShutdown = False
  24.             MessageBox.Show("Cierre de la sesión Windows anulada")
  25.  
  26.         End If
  27.  
  28.     End Sub