Newsgroup: it.comp.lang.visual-basic
Titolo: runtime error 380

ho fatto un piccolo programma che, dopo un certo tempo di inattività
dell'utente (non utilizzo del mouse, non navigazione web), reindirizza
automaticamente ad una pagina predefinita.
Il problema è che se definisco il tempo di inattività entro i 60000
millisecondi funziona, oltre mi da l'errore runtime error 380 -
invalid property value.
Quindi finchè Timer1.Interval = 60000 tutto ok, ma se lo porto oltre
dà l'errore. ed io avevo pensato a 3 minuti, quindi il triplo di quel
valore.
Cosa vuol dire valore di proprietà non valido?
Qualcuno mi sa dire quale potrebbe essere il problema?
Grazie

Grazie
Probabilmente il valore massimo impostabile � quello per un Unsigned Integer a
16 bits, cio� 65535.
Vedi se puoi indirizzarlo ad un evento che abbia un altro registro contatore in
cui decrementi i munuti, in modo che il primo lo metti a 60000 e il secondo a 3.
--
ciao
  Stefano

   Stefano
Non ho capito...scusa...

 Non ho capito...scusa...
Il limite del timer e quello: un intero a 16 bit senza segno: 65535.
come ti ha detto sergio, e' meglio se fai un contatore indipendente
che conta i minuti (o i secondi), ad esempio, imposti il timer a
1 secondo e ad ogni "scatto" del timer incrementi il contatore: se
il contatore raggiunge il limite prefissato, azzeri il contatore.
' vb6
Private ContaSecondi  As Byte
Private ContaMinuti  As Byte
Private Sub Form_Load()
 Timer1.Interval = 1000
 Timer1.Enabled = True
End Sub
Private Sub Timer1_Timer()
 ContaSecondi = ContaSecondi + 1
 If ContaSecondi = 61 Then
   ContaSecondi = 0
   ContaMinuti = ContaMinuti + 1
 End If
If ContaMinuti = 2 Then
   ContaMinuti = 0
   MsgBox "Sono passati 2 minuti"
End If
End Sub

On 15 Set, 17:04, "Franz_aRTiglio" <franz...@N0SPAMtin.it> wrote:
Ho fatto varie prove ma non funziona...qualcuno riesce a capire dove
sbaglio?
Private ContaSecondi As Byte
Private ContaMinuti As Byte
------
Private Sub Form_Load()
Dim aURL As String
aURL = "MiaHomePage"
If Command <> "" Then
    aURL = Command
End If
WebBrowser1.Navigate (aURL)
WebBrowser1.Left = 0
WebBrowser1.Top = 0
Timer1.Interval = 1000
Timer1.Enabled = True
End Sub
------
Private Sub Timer1_Timer()
 ContaSecondi = ContaSecondi + 1
 If ContaSecondi = 61 Then
    ContaSecondi = 0
    ContaMinuti = ContaMinuti + 1
 End If
   If ContaMinuti = 3 Then
      ContaMinuti = 0
      Timer1.Enabled = False
      If WebBrowser1.LocationURL <> "MiaHomePage" Then
         WebBrowser1.Navigate ("MiaHomePage")
      End If
   End If
End Sub
Grazie

 sbaglio?
...
Cos'e' che non funziona?
Non era piu' semplice contare fino a 180 secondi, anziche dividere minuti e 
secondi?


Probabilmente si...non so...
ma Timer1.Interval è in millisecondi, e come ho spiegato sopra se
imposto Timer1.Interval=180000 (e quindi 3 minuti) mi restituisce
l'errore runtime error 380 - invalid property value.
Se invece uso il codice che ho postato poco fa, non torna alla
"MiaHomePage" dopo il tempo impostato di 3 minuti

Se invece uso il codice che ho postato poco fa, non torna alla
"MiaHomePage" dopo il tempo impostato di 3 minuti
....
Questo si intuiva :-)
Cosa e' che "non funziona"?
Il contatore dei secondi non avanza?
Il contatore dei minuti non avanza?
Arrivati a 3 minuti, entri nell'IF ma non succede nulla?

 Arrivati a 3 minuti, entri nell'IF ma non succede nulla?
Non arriva ai secondi impostati.
Private Sub Timer1_Timer()
 ContaSecondi = ContaSecondi + 1
 If ContaSecondi = 100 Then
      ContaSecondi = 0
      Timer1.Enabled = False
    If WebBrowser1.LocationURL <> "MiaHomePage" Then
         WebBrowser1.Navigate ("MiaHomePage")
      End If
 End If
End Sub
Ma cambia pagina dopo 80 secondi circa (a volte più, a volte
meno...boh)

meno...boh)
Riprendendo il codice che postavi all'inizio, tu abiliti il timer appena 
carichi la form.
Naturalmente devi azzerare il contatore ogni volta che l'utente mouva il 
mouse, faccia click su qualche cosa, o agisca dalla tastiera.

 mouse, faccia click su qualche cosa, o agisca dalla tastiera.
Si, certo...
Ti posto tutto il codice..
---------
Option Explicit
Private Type POINTAPI
    X As Long
    Y As Long
End Type
Private ContaSecondi As Byte
Private ContaMinuti As Byte
Private Declare Function GetCursorPos Lib "User32" (lpPoint As
POINTAPI) As Long
----------
Private Sub Form_Load()
Dim aURL As String
aURL = "MiaHomePage"
If Command <> "" Then
    aURL = Command
End If
WebBrowser1.Navigate (aURL)
WebBrowser1.Left = 0
WebBrowser1.Top = 0
Timer1.Interval = 1000
Timer1.Enabled = True
End Sub
-------------
Private Sub Timer1_Timer()
 ContaSecondi = ContaSecondi + 1
 If ContaSecondi = 180 Then
      ContaSecondi = 0
      Timer1.Enabled = False
      If WebBrowser1.LocationURL <> "MiaHomePage" Then
         WebBrowser1.Navigate ("MiaHomePage")
      End If
 End If
End Sub
-----------
Private Sub Timer2_Timer()
Dim p As POINTAPI
Dim ret As Long
Static X As Long
Static Y As Long
ret = GetCursorPos(p)
If p.X <> X Or p.Y <> Y Then
    Timer1.Enabled = False
    Timer1.Enabled = True
End If
X = p.X
Y = p.Y
End Sub
---------------
Private Sub WebBrowser1_DownloadComplete()
    Timer1.Enabled = False
    Timer1.Enabled = True
End Sub
Così gestisco il movimento del mouse e la navigazione internet.
Ho provato a impostare 180 secondi e dopo circa 150 torna alla home
page...

If p.X <> X Or p.Y <> Y Then
    Timer1.Enabled = False
    Timer1.Enabled = True
End If
X = p.X
Y = p.Y
End Sub
....
Intanto prima disabiliti il timer1, poi subito dopo lo riabiliti.
In ogni caso, se effettivamente vedi che hai mosso il mouse (naturamente qui 
non intercetti click, e non intercetti operazioni da tastiera), non riporti 
il ContaSecondi a 0.
Cioe'...
lanci il programma, non fai nulla per un po' e il ContaSecondi viene 
incrementato.
Ammettiamo che dopo un minuto (ContaSecondi = 60), muovi il mouse... Il 
Timer2 se ne accorge, quindi disabilita il timer1, subitissimo dopo lo 
riabilita, e comunque ContaSecondi e' rimasto a 60. Ecco che 120 secondi 
dopo, parte la routine di indirizzamento.

 dopo, parte la routine di indirizzamento.
Vero Vero....
avevo proprio scordato di azzerare il contatore in seguito al
movimento del mouse.
E' vero che non intercetto i click nè le operazioni dalla tastiera
(onestamente non so neanche come fare), ma comunque credo che possa
bastare questo....
comunque ora funziona.
Aggiungendo quindi ContaSecondi = 0 al movimento del mouse
ora lo testo per qualche giorno...
Se hai qualche altro suggerimento lo ascolto volentieri :-)
Grazie 1000