Bonjour
Je voudrais faire un service qui affiche un msgbox tous les jours à 17h30.
Pourriez vous m'aider svp ? Une piste ?
Merci
Bonjour
Je voudrais faire un service qui affiche un msgbox tous les jours à 17h30.
Pourriez vous m'aider svp ? Une piste ?
Merci
Salut,
C'est une fonctionnalité que j'avais développé pour une application avec des jours d'éxécution en plus, voici un exemple (simplifié de ce que j'avais fait) de création de Timer (pour l'heure du goûter, ou fin de journée
):
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Dim t As New System.Windows.Forms.Timer 'Crée un timer (peut etre un autre Timer peut être utilisé) t.Interval = CalculeIntervalle() t.Start() 'Démarrage AddHandler t.Tick, AddressOf CalculeIntervalle 'ReCalcule la prochaine execution (86 400 000 ms normalement) AddHandler t.Tick, AddressOf TonAction 'Action à effectuer à ton Heure End Sub
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Public Sub TonAction() MsgBox("Coucou") End SubEDIT : oops j'avais zappé la partie "Service"
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 ''' <summary> ''' Calcule l'intervalle avant ta prochaine exécution. ''' </summary> ''' <returns>Nombre de milliseconds avant ton heure programmée</returns> ''' <remarks></remarks> Public Function CalculeIntervalle() As Integer Dim heureProgrammation As Integer = 17 Dim minuteProgrammation As Integer = 30 'Heure actuelle Dim maintenant As Date = Date.Now 'Heure de programmation pour aujourd'hui Dim aujourdhui As New Date(maintenant.Year, maintenant.Month, maintenant.Day, heureProgrammation, minuteProgrammation, 0) 'Heure de programmation pour demain Dim demain As Date = DateAdd(DateInterval.Day, 1, aujourdhui) Dim inter As Integer = DateDiff(DateInterval.Second, maintenant, aujourdhui) If (inter <= 0) Then 'Heure passée, prochaine exécution demain inter = DateDiff(DateInterval.Second, maintenant, demain) End If Return inter * 1000 'Conversion Seconds -> MilliSeconds End Function
@+
Mat
merci matt
pourriez vous ajouter la partie service svp![]()
Je suis désolé, mais je ne connais pas du tout le dev coté service.
Il suffit de faire juste le contenu de ce que j'ai appelé TonAction
et tu planifies ta tache via une commande shell
Source : http://www.developpez.net/forums/d63...s/#post3749019
Code : Sélectionner tout - Visualiser dans une fenêtre à part Shell("AT 17:30 /INTERACTIVE /EVERY:l,ma,me,j,v,s,d """ & My.Application.Info.DirectoryPath & "\" & My.Application.Info.AssemblyName" & ".exe"" auto")
Ou plus récent :
Ceci marche dans mon shell, mais depuis l'appli, j'ai quelque soucis. A creuser.
Code : Sélectionner tout - Visualiser dans une fenêtre à part Process.Start("SCHTASKS /Create /SC DAILY /TN nomTache /TR 'C:\\ConsoleApp.exe' /ST 16:43")
tape SCHTASKS /? dans ton invite de commande pour plus d'options.
@+
Mat
Bonjour,
Tu peux faire ça avec une form invisible sans inscription en barre de tâche, au choix du type d'applicatin lors de la création, à mettre au lancement dans le dossier démarrer (start...), à moins que tu ne veuilles l'appeler ?
Mais ça prend du temps processeur, le mieux c'est le réveil à côté
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 Option Explicit On Public Class Form1 Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Timer1.Interval = 60000 Timer1.Enabled = True End Sub Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick If Now.Hour <> 17 Then Exit Sub If Now.Minute <> 30 Then Exit Sub MsgBox("Il est 17h30") 'Timer1.Enabled = False End Sub End Class
Le plus simple et le plus adapte selon tes desirs, c'est que tu crees juste un petit form a ton gout et signalant qu'il est l'heure et que tu crées manuellement la planification tous les jours a xxhxx
Comme ca c'est le systeme qui gere la comparaison et ca ne prends rien en memoire, ni d'avoir un exe en arriere plan qui est juste là pour rien faire 99.99% du temps
Autre solution avec tjrs la planification et sans developpement, tu crees juste une planification un simple beep dans l'invite de commande. Ca mange pas de pain et ca prends 20s![]()
Partager