16 votes

Comment détecter le début et la fin d'un processus en utilisant c# dans Windows ?

J'ai une bonne expérience de travail avec C# mais maintenant je veux développer un logiciel simple (peut-être une application console) qui détecte juste le nom et l'heure du processus commencé ou terminé sur mon ordinateur.

Par exemple (je suppose que ma petite application est déjà en cours d'exécution) si un utilisateur ouvre Firefox, il devrait simplement insérer firefox.exe dans une base de données avec l'heure et si un utilisateur le ferme, il devrait également faire la même chose.

Et comme ci-dessus, si un utilisateur ouvre notepad, il doit insérer notepad.exe avec l'heure et ainsi de suite.

Je sais comment insérer des valeurs dans la base de données mais j'ai juste besoin de votre aide pour identifier quand le processus/programme commence ou se termine sur mon système.

Honnêtement, je n'ai jamais développé ce type d'application avant, donc je n'ai aucune idée si cela peut être possible en utilisant une application console ou si je dois créer une application de service Windows, etc.

Veuillez donc fournir votre réponse en me considérant comme un débutant.

Dans la partie C#, je suis capable de le comprendre, donc pas besoin de s'inquiéter à ce sujet.

J'utilise Visual Studio 2010 avec .net 4.0.

24voto

David Heffernan Points 292687

Pour faire cela sans sonder, il faut utiliser WMI. Cette fonctionnalité est bien prise en charge par .net et vous pouvez utiliser la fonction ManagementEventWatcher pour s'abonner aux notifications WMI.

Ce site Article sur le projet de code illustre la manière de procéder. Voici un extrait qui montre à quel point c'est simple.

notePad = new ProcessInfo("notepad.exe");
notePad.Started +=
    new Win32Process.ProcessInfo.StartedEventHandler(this.NotepadStarted);
notePad.Terminated +=
    new Win32Process.ProcessInfo.TerminatedEventHandler(this.NotepadTerminated);

Notez que ProcessInfo est une classe implémentée dans le code joint à cet article.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X