rocketA
16-12-2010, 12:03
salve a tutti,
ho rinvenuto questo codice che dopo un tot di tempo d'inattivita' da parte dell'utente (per prova ho impostato 3 secondi), dovrebbe aprire un nuovo form.
Ho creato 2 form (Form1, Form2) e un timer (Timer1)
Public Class Form1
Private Structure POINTAPI
Dim X As Integer
Dim Y As Integer
End Structure
Dim MousePos As POINTAPI 'holds mouse position
Dim mdtLastKBorMouseEvent As Date
Dim mbIsIdle As Boolean
Dim sysLogOffSecs As Integer = 3
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
End Sub
Public Sub subDetectIdle()
Dim bIsIdle As Boolean
Dim tCurrentPos As POINTAPI
Dim lDiff As Integer
bIsIdle = True
tCurrentPos.X = CInt(Windows.Forms.Cursor.Position.X.ToString)
tCurrentPos.Y = CInt(Windows.Forms.Cursor.Position.Y.ToString)
'Mouse Moved?
If (MousePos.X < tCurrentPos.X) Or (MousePos.Y <>
tCurrentPos.Y) Then
bIsIdle = False
MousePos.X = tCurrentPos.X
MousePos.Y = tCurrentPos.Y
End If
If Not bIsIdle Then 'Not idle...
'Not idle... Update Current Time variable
mdtLastKBorMouseEvent = Now
'Make sure the module level var is set correctly
mbIsIdle = False
Else
'Currently Idle. See how long
If mbIsIdle = False Then
'Number of seconds elapsed?
lDiff = DateDiff(Microsoft.VisualBasic.DateInterval.Second, mdtLastKBorMouseEvent, Now)
If lDiff >= sysLogOffSecs Then
mbIsIdle = True
End If
End If
End If
End Sub
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
Call subDetectIdle()
If mbIsIdle = True Then
Dim frm As New Form2()
frm.ShowDialog()
End If
End Sub
End Class
Detto questo, vorrei far si' che una volta aperto il Form2, tutto si fermi, ovvero che ne venga aperta una sola istanza e stop.
Mi scuso per la banalita' della richiesta, ma proprio non ne vengo fuori.
Prego risposte terra-terra, ho cominciato con vb... ieri.
grazie
ho rinvenuto questo codice che dopo un tot di tempo d'inattivita' da parte dell'utente (per prova ho impostato 3 secondi), dovrebbe aprire un nuovo form.
Ho creato 2 form (Form1, Form2) e un timer (Timer1)
Public Class Form1
Private Structure POINTAPI
Dim X As Integer
Dim Y As Integer
End Structure
Dim MousePos As POINTAPI 'holds mouse position
Dim mdtLastKBorMouseEvent As Date
Dim mbIsIdle As Boolean
Dim sysLogOffSecs As Integer = 3
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
End Sub
Public Sub subDetectIdle()
Dim bIsIdle As Boolean
Dim tCurrentPos As POINTAPI
Dim lDiff As Integer
bIsIdle = True
tCurrentPos.X = CInt(Windows.Forms.Cursor.Position.X.ToString)
tCurrentPos.Y = CInt(Windows.Forms.Cursor.Position.Y.ToString)
'Mouse Moved?
If (MousePos.X < tCurrentPos.X) Or (MousePos.Y <>
tCurrentPos.Y) Then
bIsIdle = False
MousePos.X = tCurrentPos.X
MousePos.Y = tCurrentPos.Y
End If
If Not bIsIdle Then 'Not idle...
'Not idle... Update Current Time variable
mdtLastKBorMouseEvent = Now
'Make sure the module level var is set correctly
mbIsIdle = False
Else
'Currently Idle. See how long
If mbIsIdle = False Then
'Number of seconds elapsed?
lDiff = DateDiff(Microsoft.VisualBasic.DateInterval.Second, mdtLastKBorMouseEvent, Now)
If lDiff >= sysLogOffSecs Then
mbIsIdle = True
End If
End If
End If
End Sub
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
Call subDetectIdle()
If mbIsIdle = True Then
Dim frm As New Form2()
frm.ShowDialog()
End If
End Sub
End Class
Detto questo, vorrei far si' che una volta aperto il Form2, tutto si fermi, ovvero che ne venga aperta una sola istanza e stop.
Mi scuso per la banalita' della richiesta, ma proprio non ne vengo fuori.
Prego risposte terra-terra, ho cominciato con vb... ieri.
grazie