Service NT

cs_lucmar Messages postés 5 Date d'inscription jeudi 19 décembre 2002 Statut Membre Dernière intervention 16 décembre 2004 - 16 déc. 2004 à 01:31
Ricks27 Messages postés 79 Date d'inscription mardi 4 juin 2002 Statut Membre Dernière intervention 29 juillet 2005 - 16 déc. 2004 à 14:09
J'ai un programme qui tourne comme service NT. Je veut pouvoir par un autre programme en vb.net le démarrer, le redémarrer ou l'arrêter.

De plus je dois donner effectuer cette opération (comme si j'étais un administrateur) car les personnes qui ouvre ou ferme se programme seront des formateurs qui n'ont pas les droits d'administrateur.

Luc Marchand
Québec

2 réponses

Ricks27 Messages postés 79 Date d'inscription mardi 4 juin 2002 Statut Membre Dernière intervention 29 juillet 2005
16 déc. 2004 à 14:07
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

[\Code]

On appelle la procedure "UpdateServiceStatus" toute les secondes. Cette procedure vérifie l'Etat du service.

<table border=0 cellspacing=0 cellpadding=4 bgcolor=#E0E0E0><tr><td class=code>
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
0
Ricks27 Messages postés 79 Date d'inscription mardi 4 juin 2002 Statut Membre Dernière intervention 29 juillet 2005
16 déc. 2004 à 14:09
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
0
Rejoignez-nous