Bonjour
Je voudrais faire un service qui affiche un msgbox tous les jours à 17h30.
Pourriez vous m'aider svp ? Une piste ?
Merci
Version imprimable
Bonjour
Je voudrais faire un service qui affiche un msgbox tous les jours à 17h30.
Pourriez vous m'aider svp ? Une piste ?
Merci
un service ne doit pas interagir avec une session windows
tu peux par contre faire une application et utiliser les tâches planifiées de windows
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 :D, ou fin de journée:aie:):
Code:
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:
1
2
3 Public Sub TonAction() MsgBox("Coucou") End Sub
EDIT : oops j'avais zappé la partie "Service" :roll:Code:
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 :D
pourriez vous ajouter la partie service svp :oops:
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/#post3749019Code: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: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é :ccool:
Code:
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 ;)