Pequeño Problema :O! - Inactivo?

Iniciado por BoboV1, 22 Octubre 2010, 01:29 AM

0 Miembros y 1 Visitante están viendo este tema.

BoboV1

Hola foreros!

Tengo este codigo :

Código (vb) [Seleccionar]
Option Explicit

Private Declare Function GetQueueStatus Lib "user32" (ByVal fuFlags As Long) As Long

Private Const QS_KEY = &H1
Private Const QS_MOUSEMOVE = &H2
Private Const QS_MOUSEBUTTON = &H4
Private Const QS_MOUSE = (QS_MOUSEMOVE Or QS_MOUSEBUTTON)
Private Const QS_INPUT = (QS_MOUSE Or QS_KEY)

Public bCancel As Boolean

Public Sub Inactividad(ByVal TimeOut_InSec As Long)
Dim t As Long
t = Timer
Do While bCancel = False
If GetQueueStatus(QS_INPUT) Then
t = Timer
DoEvents
End If
If Timer - t >= TimeOut_InSec Then Exit Do
Loop
If bCancel = False Then Shell ("notepad.exe")

End Sub

Private Sub Command1_Click()
On Error GoTo asd
Label2.Caption = "Tiempo de inactividad" & " " & Text1.Text & " " & "Segundos."
Call Inactividad(Text1.Text)
Exit Sub
asd:

Label2.Caption = "Error, Pone Los Segundos ^^"

MsgBox "No pusiste la cantidad de segundos ;)"

End Sub

Private Sub Command2_Click()
MsgBox "En La V2 ^^"
MsgBox "Creado Por Nicolas Petrocco"
End Sub

Private Sub Command3_Click()
Form2.Show
End Sub

Private Sub Form_Load()
Me.Show


End Sub

Private Sub Form_Unload(Cancel As Integer)
bCancel = True
End Sub


Lo q hace es abrir el notepad a los 2 segundos de inactividad.

El problema: Es considerado inactivo cuando NO SE PASA EL MAUS SOBRE EL FORM!

pero osea, si yo estoy navegando y lo configuro para q alos 2 segundos se abra el notepad, tengo q pasar el maus constantemente sobre el form... yo considero "Inactiva la pc" cuando EL MAUS ESTA COMPLETAMENTE QUIETO! (No cuando no lo paso sobre el form)


Como lo puedo solucionar?

raul338

En el timer que usas (supongo) usa la API GetActiveWindow o GetForegroundWindow y comparas el hwnd devuelto con el de tu form, si es asi, haces lo que tengas que hacer y si no, no haces nada

BoboV1

Modifique el tema, capaz entienden mejor xD!

Porq a la respuesta de Raul no la entendi ;D

BoboV1


Psyke1

.

En vez de lo de pasar el mouse por el ratón, se me ocurre que podrias mirar la posicion del cursor con api GetCursorPos comprobar si varía cada 500 ms (por ejemplo) , si lleva X veces sin variar entonces abres el notepad. Me explique?
Es solo una idea... ;)

DoEvents! :P