2011-12-22 15 views

Respuesta

11

No hay forma documentada de comprobar si la sesión está bloqueada. Sin embargo, hay una manera de detectar que la sesión es obteniendo bloqueado. Use WTSRegisterSessionNotification(), obtendrá un mensaje WM_WTSSESSION_CHANGE con el valor WTS_SESSION_LOCK cuando la estación de trabajo esté bloqueada.

Si está planeando hacer esto desde un servicio, asegúrese de buscar en google "aislamiento de sesión 0" para descubrir por qué eso no funciona.

+0

Gracias! Ahora estoy leyendo este enlace http://support.microsoft.com/kb/310153. Voy a probar el código más tarde. –

+4

Usar 'WTSRegisterSessionNotification()' es la única opción. MSDN lo dice todo (consulte http://msdn.microsoft.com/en-us/library/windows/desktop/aa376875.aspx): "No hay ninguna función a la que pueda llamar para determinar si la estación de trabajo está bloqueada. Para recibir notificaciones cuando el usuario inicia sesión, use la función 'WTSRegisterSessionNotification()' para recibir los mensajes 'WM_WTSSESSION_CHANGE'. Los servicios que utilizan una devolución de llamada SCM 'HandlerEx', a diferencia de una devolución de llamada SCM' Handler', pueden recibir notificaciones 'SERVICE_CONTROL_SESSIONCHANGE' de' WTSRegisterSessionNotification() '. –

Cuestiones relacionadas