Visual Basic - Duda propiedad mouse

Life is soft - evento anual de software empresarial
 
Vista:

Duda propiedad mouse

Publicado por Danos (50 intervenciones) el 05/09/2010 06:30:35
Hola Foreros, quisiera ver si me pueden ayudar con esta duda

Estoy haciendo un proyecto al cual le agregue un form que simula una ventana de bloqueo, esta la tengo trabajando con un formulario mdi.

La idea es esta, que esta ventana se cargue en el formulario mdi cuando pase un cierto tiempo de inactividad del mouse o el teclado, la hice utilizando un cronometro y me funciona muy bien, cada que muevo el mouse utilizando la declaracion

MDIForm_MouseMove,

este empiesa otra ves desde 0 y asi sucesivamente, el problema es que si lo ocupo asi, el usuario en cualquier momento minimiza la ventana del programa y si empiesa a utilizar otro programa como internet explorer, el tiempo del programa sigue corriendo, despues de un tiempo el usuario vuelve a regresar a la ventana del programa y la ventana de bloqueo ya se activo.

Lo que necesito que me ayuden es no utilizar mi cronometro sino utilizar las propiedades del mouse y teclado, es decir cuando un protector de pantalla del sistema se activa es por que no se movio ni el mouse ni el teclado, eso es lo que me gustaria agregar a mi proyecto

¿'Como le hago?

Asi trabaja mi cronometro

Esto lo tengo en un modulo

Public iniciartiempobloqueo As Single

Public Sub IniciarBloqueo()
iniciartiempobloqueo = Timer
frmBloqueo.Timer1.Enabled = True
frmBloqueo.Visible = False
End Sub

Esto lo tengo en la ventana de Bloqueo

Private Sub Timer1_Timer()
Dim dif As Single
Dim horas As Integer
Dim minutos As Integer
Dim segundos As Integer
Dim crono As String

If Timer > iniciartiempobloqueo Then
dif = Timer - iniciartiempobloqueo
Else
dif = 86400 - iniciartiempobloqueo + Timer
End If

horas = Fix(dif) \ 3600
minutos = (Fix(dif) Mod 3600) \ 60
segundos = (Fix(dif) Mod 60)

crono = Format(horas, "00") & ":" & Format(minutos, "00") & ":" & Format(segundos, "00")
MDIForm1.StatusBar1.Panels(6) = crono
DoEvents

If crono = "00:20:00" Then
frmBloqueo.Show
End If
End Sub

De antemano muchas 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:Duda propiedad mouse

Publicado por XHkrElite (518 intervenciones) el 08/09/2010 05:37:43
espero te sirva esto

utiliza la propiedad Form1.deactivate por si se sale del programa se desactive el conteo

este es un form1 con el mdi creo que es diferente
Private Sub Form_Deactivate()
detenercronometro
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:Duda propiedad mouse

Publicado por Danos (50 intervenciones) el 08/09/2010 22:40:53
Esto es lo que buscaba, de antemano muchas gracias a todos

Saludos,

Option Explicit
Private Declare Function GetTickCount Lib "kernel32" () As Long
Private Declare Function GetLastInputInfo Lib "user32" (plii As Any) As Long
Private Type LASTINPUTINFO
cbSize As Long
dwTime As Long
End Type

Private Sub Timer1_Timer()
Dim lii As LASTINPUTINFO
lii.cbSize = Len(lii)
Call GetLastInputInfo(lii)
With Label1
.Caption = FormatNumber((GetTickCount() - lii.dwTime) / 1000, 0)
.Refresh
End With
If CInt(Label1.Caption) = 10 Then
MsgBox "Timed out."
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