Visual Basic Foro
Programación => Visual Basic 6 => Mensaje iniciado por: pedroesca en Noviembre 24, 2011, 10:15:02 pm
-
Buenas y santas: alguien sabe, por esas casualidades cósmicas de la vida y del universo, como cerrar un formulario luego de cierto tiempo de inactividad??? es decir, luego de que no se haya efectuado clicks ni se hayan pulsado teclas, tanto en el form, como en sus controles....
Podrá ser posible esto?
-
Con el api GetLastInputInfo se puede obtener el tiempo de la ultima actividad del teclado o el raton
Aqui un ejemplo de VBnet / Randy Birch
http://vbnet.mvps.org/code/system/getlastinputinfo.htm (http://vbnet.mvps.org/code/system/getlastinputinfo.htm)
-
Solucioné el asunto utilizando las funciones SaveSetting y GetSetting.
Estas ambas funciones en un módulo bas
Public Function AppSet_GetLockTimeOut(Optional sUserName As String = "") As Integer
Dim sValue As String
sValue = GetSetting(App.Title, "settings", sUserName & "-LockTimeOut", 10)
If IsNumeric(sValue) Then
AppSet_GetLockTimeOut = Val(sValue)
Else
AppSet_GetLockTimeOut = 60
End If
End Function
Public Function AppSet_SetLockTimeOut(Optional iNewLockTime As Integer = 60, Optional sUserName As String = "")
If iNewLockTime < 60 Then iNewLockTime = 60
SaveSetting App.Title, "settings", sUserName & "-LockTimeOut", Str(iNewLockTime)
End Function
Y en un timer colocado en el MDI de la aplicación, o en el form principal, lo siguiente:
Private Sub timerWatchCursor_Timer()
Static ic As Integer
Static op As POINTAPI
Dim p As POINTAPI
GetCursorPos p
If (p.X < (op.X + 5) And p.X > op.X - 5) And (p.Y < (op.Y + 5) And p.Y > op.Y - 5) Then
ic = ic + 1
Else
ic = 0
End If
op.X = p.X
op.Y = p.Y
If ic > AppSet_LockTimeOut Then
ic = 0
LockAPP
End If
End Sub
Donde en el procedimiento "LockAPP" le decimos si queremos que cierre todo, muestre un protector de pantalla, o cierre la sesión, etc.
La verdad que no estoy seguro de guardar configuraciones mayores o preferencias de usuarios en el registro de windows.
Saludos.
-
Con el api GetLastInputInfo se puede obtener el tiempo de la ultima actividad del teclado o el raton
Aqui un ejemplo de VBnet / Randy Birch
http://vbnet.mvps.org/code/system/getlastinputinfo.htm (http://vbnet.mvps.org/code/system/getlastinputinfo.htm)
eso esta bien para el sistema, el quiere para el formulario solo.
@pedroesca
guardalos en un .ini, es mejor que estar llenando el registro, asi hacen todos los programas para guardar configuraciones.
saludos.
-
HOLA!!!
Yo no me complicaria tanto...
Pone en el evento From_lostFocus()
TimerCerrar.enabled = true
en el evento Form_GotFocus()
TimerCerrar.Enabled = false
En el timercerrar
Unload Me
Mezclando este metodo con el api getlastinputinfo ya estaria solucionado tu problema
GRACIAS POR LEER!!!
-
Otra alternativa es la api GetQueueStatus
En FreeVbCode hay un ejemplo
http://www.freevbcode.com/ShowCode.asp?ID=3297 (http://www.freevbcode.com/ShowCode.asp?ID=3297)