Newsgroup: it.comp.lang.visual-basic
Titolo: Controllo condizione ogni ora (timer?)

Salve,
ho bisogno che il mio programma effettui un'operazione
1 volta all'ora ogni ora. Per ora uso il controllo
TIMER ma a questo posso assegnare max un intervallo di
circa 1 minuto. Come posso fare?
Grazie!
Walter
______________________________________________________________________
Do You Yahoo!?
Il tuo indirizzo gratis e per sempre @
yahoo.it
 su 
http://mail.yahoo.it
-- 
Posted from 
web11006.mail.yahoo.com
 [216.136.131.56] 
via Mailgate.ORG Server - 
http://www.Mailgate.ORG

circa 1 minuto. Come posso fare?
nell'evento timer verifica se č passata un ora (datediff("h",avviodeltimer,now))
Ciao,
Moreno
#sirri#@#morenosoft#.com
(togliete "#" dall'indirizzo)
Moreno Sirri VB Site - 
http://www.msvbsite.net
---------------------------------------------------------------------------
Le risposte alle tue domande le trovi sul Sito Comune di questo NewsGroup:
 
http://www.it-lang-vb.net
---------------------------------------------------------------------------

 Grazie!
Prova a usare l'API SetTimer e KillTimer
Ciao
--
Timothy Redaelli
timothy....@email.it

 wrote in message
9crhgc$f8ofk$2...@ID-87006.news.dfncis.de...



[SNIP]
In un modulo .bas inserisci
Public Declare Function SetTimer Lib "user32" Alias "SetTimer" _
 (ByVal hWnd As Long, ByVal nIDEvent As Long, ByVal uElapse As Long _
 , ByVal lpTimerFunc As Long) As Long
Public Declare Function KillTimer Lib "user32" Alias "KillTimer" _
 (ByVal hwnd As Long, ByVal nIDEvent As Long) As Long
Public TimerID As Long
Public Sub CallBackTimer(ByVal hwnd As Long, ByVal uMsg As Long _
 , ByVal idEvent As Long,  ByVal dwTime As Long)
    MsgBox "E' scattato il timer!"
End Sub
a questo punto usa questo codice dove preferisci, diciamo negli eventi Form_Load
e Form_Unload di una finestra qualunque:
Private Sub Form_Load()
'Attiviamo un timer da 1 ora!
TimerID = SetTimer(Me.hwnd, 0&, 3600000, AddressOf CallBackTimer)
End Sub
Private Sub Form_UnLoad()
'distruggiamo il timer
KillTimer Me.hwnd, TimerID
End Sub
Non ho aspettato un'ora per vedere se funziona, ma dovrebbe ;-)
Ciao
--
Luca Dormio
luca....@tin.it

Credevo di non aver capito come funzionassero... ma invece avevo capito
bene. Una cosa simile e' fattibile anche con l'oggetto timer, anche se
comunque in questo modo e' piu' pulito.
Il discorso e' che cercavo un'altra cosa ed approfitto per chiedere ora.
Ho un servizio NT che esegue delle import da diversi database. Vorrei che
scattasse ad un determinato orario, ma senza fare conteggi o cose simili.
Attualmente parte una volta al giorno... ma faccio un conteggio col timer di
quanto tempo e' passato dall'ultima volta. Se pero' ad esempio riavvio la
macchina, restarto il servizio e tale contatore si resetta.
Mi occorrerebbe un qualcosa che si confrontasse con l'orario di sistema, in
modo tale che a prescindere da cosa accade, la procedura partira' sempre
allo stesso orario.
Si tratta solo di trovare una buona idea... perche' a fare si puo' fare!!
Attendo e ringrazio...
Luca Dormio <lucaFAV...@tinFAVA.it> wrote in message
9crrrd$g4j$1...@fe1.cs.interbusiness.it...


 scattasse ad un determinato orario, ma senza fare conteggi o cose simili.
[SNIP]
In effetti questo lo potresti comunque fare estendendo di poco il concetto di
prima; ovvero invece che scatenare direttamente la tua procedura allo scoccare
del timer, poresti fare qualcosa tipo:
Dim ScheduledTime As Date
Sub Main
    'impostiamo il tempo di esecuzione previsto; questa sintassi
    'dovrebbe andar bene indipendentemente dalle impostazioni
    'internazionali del S.O.
    ScheduledTime = #4:15:00 PM#
End Sub
Sub <evento Timer o funzione di callback, non importa>
    Dim CurrentTime As Date
    'confrontiamo l'ora attuale con quella impostata per vedere se e'
    'uguale (o maggiore, dipende dall'intervallo scelto per il timer)
    CurrentTime = Time
    If CurrentTime >= StartTime Then
        'disattiviamo subito il timer e avviamo la procedura richiesta
    End If
End sub
la precisione del timer dipende a questo punto dalla precisione che vuoi avere
nello stabilire l'ora di avvio, nell'esempio qui sopra dovrai generare l'evento
timer almeno una volta al minuto...
Non e' niente di particolarmente "astuto" ma dovrebbe servire allo scopo


Luca Dormio <lucaFAV...@tinFAVA.it> wrote in message
9cuar3$eeq$1...@fe1.cs.interbusiness.it...
[SNIP]
scusami, questa riga
     If CurrentTime >= StartTime Then
va corretta con
     If CurrentTime >= ScheduledTime Then
