OVH Cloud OVH Cloud

execution programmée d'un executable

4 réponses
Avatar
michael
bonjour, j'ai fais un petit programmes en vb qui doit tourné toutes les
heures à une heure fixe et envoier les fichiers résultats vers un site ftp...
Que dois je faire?? qqn aurait t'il des pistes?? Timer ou pas?? comparé
l'heure du système??
merci d'avance pour vos réponse

4 réponses

Avatar
Drizzit
Si c'est à heure fixe, , un timer, executé toute les 60 sec suffit.
Dans l'évènement Timer de ton timer, tu peux comparer l'heure
système, si elle est supérieure ou égale à l'une de tes heures
d'exécution qui n'ont pas encore été faite. A toi de voir comment tu
veux sauver l'information comme quoi ton exécution de hh:mm est faite
(dans un fichier ini, dans une base de données, dans la base de
registre, ....)

Maintenant, si tu veux exécuter tes les mm minutes une procédure, un
timer suffit aussi (sauf si tu veux travailler au millième de seconde
près...) Dans l'évènement Timer de ton timer tu peux faire un truc
dans le genre:

Private Sub timMonTimer_Timer()
Const lngIntervalMinute As Long = 60
Static blnExecutionEnCours As Boolean
Static datDerniereExecution As Date
On Error GoTo Erreur
if blnExecutionEnCours Then Exit Sub
' On fait une vérification toutes les 60 minutes
If DateDiff("n", datDerniereExecution , Now) >= lngIntervalMinute
Then
blnExecutionEnCours = True
' Je fais mon traitement

datDerniereExecution = Now
blnExecutionEnCours = False
End if
Exit Sub
Erreur:
blnNotificationEnCours = False
Msgbox Err.Number & " - " & Err.Description, vbCritical
End Sub
Avatar
michael
désolé mais les timer ne me sont pas tres familié, j'ai qqe petites questions:
l'evènement se déclenche à quel moment??? comment le programme rentre t'il
dedans??
le "n" dans DateDiff(DateDiff("n", datDerniereExecution , Now)??
Const lngIntervalMinute As Long = 60??? il connait cette constante le
timer??? comment il sais que c'est des minutes?? si on veux des secondes??
merci d'avance

"Drizzit" a écrit :

Si c'est à heure fixe, , un timer, executé toute les 60 sec suffit.
Dans l'évènement Timer de ton timer, tu peux comparer l'heure
système, si elle est supérieure ou égale à l'une de tes heures
d'exécution qui n'ont pas encore été faite. A toi de voir comment tu
veux sauver l'information comme quoi ton exécution de hh:mm est faite
(dans un fichier ini, dans une base de données, dans la base de
registre, ....)

Maintenant, si tu veux exécuter tes les mm minutes une procédure, un
timer suffit aussi (sauf si tu veux travailler au millième de seconde
près...) Dans l'évènement Timer de ton timer tu peux faire un truc
dans le genre:

Private Sub timMonTimer_Timer()
Const lngIntervalMinute As Long = 60
Static blnExecutionEnCours As Boolean
Static datDerniereExecution As Date
On Error GoTo Erreur
if blnExecutionEnCours Then Exit Sub
' On fait une vérification toutes les 60 minutes
If DateDiff("n", datDerniereExecution , Now) >= lngIntervalMinute
Then
blnExecutionEnCours = True
' Je fais mon traitement

datDerniereExecution = Now
blnExecutionEnCours = False
End if
Exit Sub
Erreur:
blnNotificationEnCours = False
Msgbox Err.Number & " - " & Err.Description, vbCritical
End Sub




Avatar
Drizzit
Le timer fonctionne de la manière suivante :
- Tu le mets sur une fenêtre, qui doit être chargée en mémoire, ou
affichée.
- Tu dois mettre sa propriété Enabled = True
- Tu dois définir une intervale (attention, c'est en milliseconde)
avec comme valeur maximum 65535 (c'est un integer...)
- De là l'évènement Timer va se déclancher (approximativement, voir
très approximativement... :o) ) tous les n (ton intervale) millième
de seconde.

Le "n" dans DateDiff("n" ... , ca permet de connaitre le nombre de
minutes entre deux dates..
Si tu veux des minutes ("n"), secondes ("s"), des heures ("h"), des
jours ("d"), des cacahouettes (heu y a pas...), ben tu adaptes le "n"
par le caractère adéquat

En espérant que cela va t'aider
Avatar
michael
merci je crois que ca marche ;-)


"Drizzit" a écrit :

Le timer fonctionne de la manière suivante :
- Tu le mets sur une fenêtre, qui doit être chargée en mémoire, ou
affichée.
- Tu dois mettre sa propriété Enabled = True
- Tu dois définir une intervale (attention, c'est en milliseconde)
avec comme valeur maximum 65535 (c'est un integer...)
- De là l'évènement Timer va se déclancher (approximativement, voir
très approximativement... :o) ) tous les n (ton intervale) millième
de seconde.

Le "n" dans DateDiff("n" ... , ca permet de connaitre le nombre de
minutes entre deux dates..
Si tu veux des minutes ("n"), secondes ("s"), des heures ("h"), des
jours ("d"), des cacahouettes (heu y a pas...), ben tu adaptes le "n"
par le caractère adéquat

En espérant que cela va t'aider