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 :

problème avec ManagementEventWatcher


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Mai 2008
    Messages
    125
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mai 2008
    Messages : 125
    Par défaut problème avec ManagementEventWatcher
    Bonjour à tous,

    Je viens soliciter votre aide car j'ai un petit soucis avec l'un de mes prgrammes. Je souhaite monitorer l'observateur d'événements Windows et effectuer des actions en fonction de l'événement detecté.

    Voici 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
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
     
    Module EASMonitoring
    Private watcher AsManagementEventWatcher
       PrivateWithEvents tMonitor As System.Timers.Timer
       Sub Main(ByVal args() AsString)
         Try
         tMonitor = New Timers.Timer(5000)
         tMonitor.Enabled = True
         AddHandler tMonitor.Elapsed, AddressOf tMonitor_Elapsed
         StartListen()
         Catch ex AsException
          Console.WriteLine(ex.Message & vbNewLine & ex.StackTrace)
         EndTry
       EndSub
     
    PublicSub NewEvent(ByVal sender AsObject, ByVal e AsEventArrivedEventArgs)
    Try
    Dim dateN AsNewDate
    dateN = DateTime.Now
    IfCType(e.NewEvent("TargetInstance"), ManagementBaseObject)("Message").ToString.Contains("Task") Then
    IO.File.AppendAllText(My.Application.Info.DirectoryPath & "\Monitor_" & dateN.ToString("yyyy_MM_dd") & ".log", ((CType(e.NewEvent("TargetInstance"), ManagementBaseObject))("Message")) & vbNewLine, System.Text.Encoding.UTF8)
    EndIf
    Catch ex AsException
    Console.WriteLine(ex.Message & vbNewLine & ex.StackTrace)
    EndTry
    EndSub
     
    PublicSub StartListen()
    Try
    Console.WriteLine("Activation du processus d'écoute...")
    watcher = New System.Management.ManagementEventWatcher
    watcher.Query = New System.Management.EventQuery("SELECT * FROM __InstanceCreationEvent WHERE TargetInstance ISA ""Win32_NTLogEvent"" and TargetInstance.LogFile = ""Application""")
    AddHandler watcher.EventArrived, AddressOf NewEvent
    watcher.Start()
    Catch ex AsException
    Console.WriteLine(ex.Message & vbNewLine & ex.StackTrace)
    EndTry
    EndSub
     
    PublicSub StopListen()
    Try
    Console.WriteLine("Arrêt du processus d'écoute...")
    watcher.Stop() 
    Catch ex AsException
    Console.WriteLine(ex.Message & vbNewLine & ex.StackTrace)
    EndTry
    EndSub
     
    PrivateSub tMonitor_Elapsed(ByVal sender As System.Object, ByVal e As System.Timers.ElapsedEventArgs) Handles tMonitorEAS.Elapsed
    Try
    Dim dateN AsDate = DateTime.Now
    IfFile.Exists(My.Application.Info.DirectoryPath & "\Monitor_" & dateN.ToString("yyyy_MM_dd") & ".log") Then
    'Traitement...
    '...
    File.Delete(My.Application.Info.DirectoryPath & "\Monitor_" & dateN.ToString("yyyy_MM_dd") & ".log")
    EndIf
    Catch ex AsException
    Console.WriteLine(ex.Message & vbNewLine & ex.StackTrace)
    EndTry
    EndSub
     
    EndModule
    Mon soucis, c'est que j'ai été obligé d'ajouter la ligne :
    Dans la Sub Main juste après car sinon le programme se ferme instantanément...

    j'aimerais donc savoir si il existait un autre moyen que celui ci car si le programme est planifié, il restera ouvert un bon bout de temps, sauf si un utilisateur appuie sur une touche dans la sonsole

    Merci à tous pour vos réponses

  2. #2
    Membre confirmé
    Inscrit en
    Mai 2008
    Messages
    125
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mai 2008
    Messages : 125
    Par défaut
    Ah oui, j'oubliais. J'ai quand même une petite idée mais elle ne me plait pas trop :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Dim pProcess() as Process = System.Diagnostics.Process.GetProcessesByName("ConsoleApplication1")
    ForEach p AsProcessIn pProcess
    p.Kill()
    Next
    Quelqu'un aurait une meilleure solution ?

    Merci

Discussions similaires

  1. VC++ Direct3D8, problème avec LPD3DXFONT et LPD3DTEXTURE8
    Par Magus (Dave) dans le forum DirectX
    Réponses: 3
    Dernier message: 03/08/2002, 11h10
  2. Problème avec [b]struct[/b]
    Par Bouziane Abderraouf dans le forum CORBA
    Réponses: 2
    Dernier message: 17/07/2002, 10h25
  3. Problème avec le type 'Corba::Any_out'
    Par Steven dans le forum CORBA
    Réponses: 2
    Dernier message: 14/07/2002, 18h48
  4. Problème avec la mémoire virtuelle
    Par Anonymous dans le forum CORBA
    Réponses: 13
    Dernier message: 16/04/2002, 16h10

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