Visual Basic.NET - ¿Nadie lo sabe?

 
Vista:

¿Nadie lo sabe?

Publicado por gono (1 intervención) el 02/11/2007 03:25:02
Buenas...
Tengo una aplicacion (Win) donde se puede setear el tiempo de bloqueo, es decir, si durante esos x segundos no hay actividad alguna en el sistema, este debe bloquearse (pedir nombre de usuario y contraseña).
¿Como hago para calcular ese tiempo de inactividad?, mas alla de tener un Timer donde valido el tiempo pasado, nose como me doy cuenta si hay inactividad o no... cuando digo inactividad, quiero decir inactividad por completo, es decir si muevo el mouse sobre mi aplicacion ésta esta activa; exactamente aigual a como funciona la inactividad de windows.

Saludos y gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:¿Nadie lo sabe?

Publicado por Harold V. (411 intervenciones) el 03/11/2007 03:54:04
Hola:

Dejame decirte algo, este mensaje lo haz puesto hace varios dias, el que no te contesten no significa que no sepamos como resolverlo, quiza por falta de tiempo.

El detalle es que debes saber en todo momento y sobre todo control de tu aplicacion donde se movio el mouse por ultima vez en el evento MouseMove y guardas su valor en un arreglo llamado "loc", y una vez que restas el tiempo, llamas nuevamente a ese evento y almacenas su valor nuevamente en el arreglo y simplemte comparas si el 1 valor es igual al valor 2 entonces si es asi no ha habido actividad. y el prog llama a tu metodo de bloqueo.

Este ejemplo te lo explica mejor...........

Dim inicio, lapso As DateTime
Dim loc(1) As Point

' Fiajte despues del Handles estan los controles de mi form, de esta manera los controlo a todos.

Private Sub frmPruebas_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) _
Handles Me.MouseMove, GridView1.MouseMove, GridControl1.MouseMove, DataGridView2.MouseMove

Dim ctl As Control
For Each ctl In Me.Controls
loc.SetValue(New Point(Control.MousePosition.X, Control.MousePosition.Y), 0)
Next
inicio = Now
Timer1.Start()

End Sub

Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
lapso = Now
If lapso.Subtract(inicio).Seconds > 10 Then '10 segundos para ejemplo
Dim mev As New MouseEventArgs(Windows.Forms.MouseButtons.None, 0, Control.MousePosition.X, Control.MousePosition.Y, 0)
frmPruebas_MouseMove(Me, mev)

loc.SetValue(New Point(frmPruebas.MousePosition.X, frmPruebas.MousePosition.Y), 1)

If loc.GetValue(0) = loc.GetValue(1) Then
'aqui llamas a tu metodo para suspender
MsgBox("suspender")
End If
End If
End Sub
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:¿Nadie lo sabe?

Publicado por gono (13 intervenciones) el 05/11/2007 17:38:30
Gracias por responder...

La solucion que planteas ya la habia analizado, el problema es que es una aplicacion muy grande, tengo muchisimos controles por formulario y seria demasiado cansador, casi imposible.

Mi duda era si se podia controlar la inactividad de forma mas general, desde el formulario padre.

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar