2010-08-06 5 views
3

Je veux que mon application surveille et enregistre les processus qui sont démarrés et terminés dans la machine winxp pendant l'existence de mon application. Je ne veux pas obtenir tous les noms de processus en cours d'exécution. Comment puis-je atteindre cet objectif ? Toutes les idées ont apprécié .. Merci.Comment puis-je surveiller le processus en utilisant C#?

Répondre

0
public static void Monitor() 
    { 
     ArrayList existingProcesses = GetExistingProcess(); 

     while (true) 
     { 
      ArrayList currentProcesses = new ArrayList(); 
      currentProcesses = GetCurrentProcess(); 

      ArrayList NewApps = new ArrayList(GetCurrentProcess()); 

      foreach (var p in ExistingProcess) 
      { 
       NewApps.Remove(p); 
      } 
      string str = ""; 
      foreach (string NewApp in NewApps) 
      { 
       str = "Process Name : " + NewApp + " Process ID : " + System.Diagnostics.Process.GetProcessesByName(NewApp)[0].Id.ToString() + " "; 
      } 
      MessageBox.Show(str); 
     } 
    } 
1

Le moyen le plus simple, sans se connecter à des fenêtres internes serait d'interroger la liste des processus en cours d'exécution de temps en temps.

using System.Diagnostics; 


// Poll every 5 seconds 
while(true) 
{ 
    // Get a list of running processes 
    Process[] processlist = Process.GetProcesses(); 

    // Do logging 
    // ... 

    Thread.Sleep(5000); 
} 
+0

Je ne veux pas récupérer tous les noms de processus. J'ai besoin des noms de processus démarrés et terminés pendant l'exécution de mon thread dans l'application. – Anuya

+0

@Anuya dans ce cas, vous devez reformuler votre question, car ce n'est pas ce que vous avez demandé. –

+0

Rephrased ... Merci, Maintenant, comment faire cela? – Anuya

1

Vous pouvez lister tous les processus en utilisant Process.GetProcesses.

Vous pouvez ensuite surveiller chaque processus dans le tableau de processus renvoyé.

Questions connexes