IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

Ecrire dans l'EventLog


Sujet :

VB.NET

  1. #1
    Membre du Club
    Inscrit en
    Juin 2007
    Messages
    112
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 112
    Points : 65
    Points
    65
    Par défaut Ecrire dans l'EventLog
    Bonjour

    VB.net version 2010.

    J'ai testé la création d'un service Windows rudimentaire où je souhaiterais pouvoir récupérer dans le journal des événements le nom des process en cours.
    Le service à l'air de fonctionner et je vois dans le log le lancement et l'arrêt du service quand j'y écris avec EventLog.WriteEntry.
    Mais ...
    quand j'essaie d'écrire le nom des process concaténés dans une variable, le contenu de la ligne dans le journal reste désespérément vide !
    Ci-dessous mon code :
    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
     
    Public Class test_service
        Dim timer As System.Timers.Timer = New System.Timers.Timer()
        Dim S As String
     
        Protected Overrides Sub OnStart(ByVal args() As String)
     
            S = ""
            Me.AutoLog = True
            EventLog.WriteEntry("service démarré")
     
            timer.Interval = 5000 ' 5 secondes
            AddHandler timer.Elapsed, AddressOf Me.OnTimer
            timer.Start()
     
        End Sub
     
        Protected Overrides Sub OnStop()
            EventLog.WriteEntry("service stoppé")
            timer.Stop()
        End Sub
     
        Public Sub New()
     
            InitializeComponent()
     
        End Sub
     
        Protected Overrides Sub Finalize()
            MyBase.Finalize()
        End Sub
     
        Private Sub OnTimer(ByVal sender As Object, ByVal e As Timers.ElapsedEventArgs)
     
            Dim ProcessAll() As Process = Process.GetProcesses()
            For i = 0 To UBound(ProcessAll)
                If ProcessAll(i).MainWindowTitle <> "" Then
                    S = S & i & " - " & ProcessAll(i).MainWindowTitle & " - "
                End If
            Next
            EventLog.WriteEntry(S)
     
        End Sub
     
    End Class
    Qu'est ce que je n'ai pas compris ?

    merci de votre aide
    cordialement

  2. #2
    Membre du Club
    Inscrit en
    Juin 2007
    Messages
    112
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 112
    Points : 65
    Points
    65
    Par défaut
    Bonjour

    Bon, en fait ça fonctionne. C'est juste que dans ce projet de type Service, le MainWindowTitle d'un process ( Pourtant testé dans un projet de type Forms et qui marchait bien) ne semble pas accessible. Mais on obtient très bien le ProcessName par exemple.

    pardon pour le dérangement

    cordialement

  3. #3
    Expert confirmé
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 239
    Points
    4 239
    Par défaut
    Citation Envoyé par MadMax4 Voir le message
    Bonjour

    Bon, en fait ça fonctionne. C'est juste que dans ce projet de type Service, le MainWindowTitle d'un process ( Pourtant testé dans un projet de type Forms et qui marchait bien) ne semble pas accessible. Mais on obtient très bien le ProcessName par exemple.

    pardon pour le dérangement

    cordialement
    Un projet de type service n'a pas de fenêtre. Donc forcément, pas de MainWindowTitle (trad : titre de la fenêtre principale) non plus...
    Fallait pas chercher bien loin ^^
    Kropernic

  4. #4
    Membre du Club
    Inscrit en
    Juin 2007
    Messages
    112
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 112
    Points : 65
    Points
    65
    Par défaut
    Bonjour Kropernic

    Certes, mais certains des autres process en cours sont fenêtrés et visibles avec un titre. Pourquoi on n'arrive pas à les obtenir ?

    cordialement

  5. #5
    Expert confirmé
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 239
    Points
    4 239
    Par défaut
    Citation Envoyé par MadMax4 Voir le message
    Bonjour Kropernic

    Certes, mais certains des autres process en cours sont fenêtrés et visibles avec un titre. Pourquoi on n'arrive pas à les obtenir ?

    cordialement
    Ah, j'avais pas compris ça comme ça. Je pensais que tu cherchais à avoir le nom du service. Sorry.

    Sur cette page, on peut lire ce qui suit :
    The main window is the window that currently has the focus; note that this might not be the primary window for the process. You must use the Refresh method to refresh the Process object to get the current main window handle if it has changed.
    J'en déduis que si le process (même fenêtré) n'a pas le focus, tu n'as rien dans MainWindowTitle. Maintenant, je n'ai jamais testé...
    Kropernic

  6. #6
    Membre du Club
    Inscrit en
    Juin 2007
    Messages
    112
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 112
    Points : 65
    Points
    65
    Par défaut
    Oui peut-être.
    Néanmoins, dans un projet de type Forms, j'ai essayé et on obtient bien les MainWindowTitles.

    Bon, c'est pas bien grave ; on peut faire autrement !

    Merci pour ta remarque
    max

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Ecrire dans l'EventLog de windows depuis Sql
    Par Bluedeep dans le forum Développement
    Réponses: 7
    Dernier message: 24/11/2010, 09h12
  2. Réponses: 2
    Dernier message: 27/04/2006, 15h22
  3. [VBS] Ecrire dans les Eventlog avec VBS
    Par Hakkou dans le forum VBScript
    Réponses: 1
    Dernier message: 04/10/2004, 14h50
  4. Ecrire dans un fichier sans supprimer le reste
    Par koan_sabian dans le forum Linux
    Réponses: 4
    Dernier message: 20/02/2003, 15h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo