Récupérer le code de sortie d'un service Windows

DJ_CleM_71 Messages postés 6 Date d'inscription mardi 28 septembre 2004 Statut Membre Dernière intervention 5 janvier 2009 - 19 déc. 2008 à 11:41
DJ_CleM_71 Messages postés 6 Date d'inscription mardi 28 septembre 2004 Statut Membre Dernière intervention 5 janvier 2009 - 5 janv. 2009 à 09:33
Bonjour,

Dans une application tierce, je lance un service Windows personnalisé.

Je souhaite que ce service renvoie des codes, et qu'ils soient analysées par l'application tierce.

Ma question est donc double :

- comment renvoyer des codes avec le service, dans la fonction onStop() par exemple ?
- comment recevoir ce code dans mon application qui lance le service ?

Avec mes remerciements.

3 réponses

DJ_CleM_71 Messages postés 6 Date d'inscription mardi 28 septembre 2004 Statut Membre Dernière intervention 5 janvier 2009
19 déc. 2008 à 12:26
J'ajoute quelques informations :

- Le service que je lance doit obligatoirement prendre des paramètres. Je suis donc obligé de le lancer via un System.ServiceProcess.ServiceController, avec un tableau d'arguments. Je ne peux donc pas utiliser le System.ServiceProcess.ServiceBase avec la méthode Run, qui ne permet pas le passage d'arguments.

- J'ai essayé une colaboration infructueuse entre System.ServiceProcess.ServiceController et System.ServiceProcess.ServiceBase, le premier pour lancer le service, le second pour capter le ExitCode.

Voici mon code côté application tierce :

Sur un clic ...
    Public ServiceAlias As New System.ServiceProcess.ServiceController
    Public EcouteService As New System.ServiceProcess.ServiceBase
    Public TabArgs(1) As String

    Private Sub Bouton_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Bouton.Click
        Dim LeBouton As Windows.Forms.Button = sender

        ' Lancement du service avec l'action verifie pour l'exe cliqué
        TabArgs(0) = "verifie"
        TabArgs(1) = LeBouton.Tag
        ServiceAlias.MachineName = "."
        ServiceAlias.ServiceName = "Alias"
        EcouteService.ServiceName = "Alias"
        ServiceAlias.Start(TabArgs)
        While Not ServiceAlias.Status.Equals(System.ServiceProcess.ServiceControllerStatus.Stopped)
            ServiceAlias.Refresh()
        End While

        MsgBox(EcouteService.ExitCode)
    End Sub


et dans mon service :
 Protected Overrides Sub OnStop()
        Me.ExitCode = 42

        ' Ajoutez ici le code pour effectuer les destructions nécessaires à l'arrêt de votre service.
    End Sub


Le MsgBox de l'application tierce me renvoit inlassablement 0.

Merci pour votre aide.
0
DJ_CleM_71 Messages postés 6 Date d'inscription mardi 28 septembre 2004 Statut Membre Dernière intervention 5 janvier 2009
23 déc. 2008 à 09:39
Bonjour,

Pas d'idée ? Faîtes mon un petit cadeau, trouvez moi la solution :-D
0
DJ_CleM_71 Messages postés 6 Date d'inscription mardi 28 septembre 2004 Statut Membre Dernière intervention 5 janvier 2009
5 janv. 2009 à 09:33
Bonjour, et mes meilleurs à tous et à toutes pour cette nouvelle année.

Je reviens à la charge pour ma question :)

Merci
0
Rejoignez-nous