Bonjour,
Voici un exemple pour contrôler un service en DotNet :
Dans ton apllication windows, il te faut ajouté un composant "Timer", celui de Windows Forms.
Mon Timer s'appelle "MinuteurService". Il est chargé de vérifier l'Etat de mon service toute les secondes.
4 boutons pour controler le service.
- 1 pour le démarrer
- 1 pour l'arréter
- 1 pour le mettre en pause
- et 1 pour redémarrer la pause.
Les miens s'appellent :
"btnContinue"
"btnPause"
"btnStart"
"btnStop"
Il te faut aussi un label dans lequel tu afficheras l'etat du service.
le mien s'appelle "lblEtatService"
Imports System.ServiceProcess
Public class Form1
Inherits System.Windows.Forms.Form
Private MyService As ServiceController
end Class
Au Form_Load de ta Form (On demarre le timer)
Me.MinuteurService.Enabled = True
Me.MinuteurService.Interval = 1000
On appelle la procedure "UpdateServiceStatus" toute les secondes. Cette procedure vérifie l'Etat du service.
Private Sub MinuteurService_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MinuteurService.Tick
UpdateServiceStatus()
End Sub
Procedure "UpdateServiceStatus"
"ServiceName" est le nom du service
Private Sub UpdateServiceStatus()
Me.MinuteurService.Enabled = False
If IsServiceInstalled(ServiceName) Then
Select Case Me.MyService.Status
Case ServiceControllerStatus.Stopped
Me.btnContinue.Enabled = False
Me.btnPause.Enabled = False
Me.btnStart.Enabled = True
Me.btnStop.Enabled = False
Me.lblEtatService.ForeColor = System.Drawing.Color.Red
Case ServiceControllerStatus.Running
Me.btnContinue.Enabled = False
If MyService.CanPauseAndContinue Then
Me.btnPause.Enabled = True
End If
Me.btnStart.Enabled = False
Me.btnStop.Enabled = True
Me.lblEtatService.ForeColor = System.Drawing.Color.Green
Case ServiceControllerStatus.Paused
If MyService.CanPauseAndContinue Then
Me.btnContinue.Enabled = True
End If
Me.btnPause.Enabled = False
Me.btnStart.Enabled = False
Me.btnStop.Enabled = True
Me.lblEtatService.ForeColor = System.Drawing.Color.Orange
Case Else
Me.btnContinue.Enabled = False
Me.btnPause.Enabled = False
Me.btnStart.Enabled = False
Me.btnStop.Enabled = False
Me.lblEtatService.ForeColor = System.Drawing.Color.Black
End Select
Me.lblEtatService.Text = "Service Status : " + MyService.Status.ToString()
Else
Me.btnContinue.Enabled = False
Me.btnPause.Enabled = False
Me.btnStart.Enabled = False
Me.btnStop.Enabled = False
Me.lblEtatService.ForeColor = System.Drawing.Color.Red
Me.lblEtatService.Text = "Service Status : Le service n'est pas installé."
End If
Me.MinuteurService.Enabled = True
End Sub
Fonction "IsServiceInstalled" (Nous retoune si le service est installé sur la machine)
Private Function IsServiceInstalled(ByVal ServiceName As String) As Boolean
Dim InstalledServices() As ServiceController
Dim TmpService As ServiceController
IsServiceInstalled = False
InstalledServices = ServiceController.GetServices
For Each TmpService In InstalledServices
If TmpService.ServiceName = ServiceName Then
IsServiceInstalled = True
MyService = TmpService
Exit For
End If
Next TmpService
End Function
Code pour chaque boutons
Private Sub btnStart_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnStart.Click
MyService.Start()
UpdateServiceStatus()
End Sub
Private Sub btnPause_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnPause.Click
MyService.Pause()
UpdateServiceStatus()
End Sub
Private Sub btnContinue_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnContinue.Click
MyService.Continue()
UpdateServiceStatus()
End Sub
Private Sub btnStop_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnStop.Click
MyService.Stop()
UpdateServiceStatus()
End Sub
Voila
J'espère que je n'ai rien oublié.
Ricks27