2010-01-27 4 views
2

En utilisant C#, comment puis-je obtenir une liste de tous les processus en cours sur la machine actuelle, y compris le nom de l'image, la description et l'ID du processus? Je suis après quelque chose de similaire à ce que vous verriez sous l'onglet "Processus" du gestionnaire de tâches, mais sans les informations sur les ressources.Comment retourner une liste de processus Windows en C#?

Répondre

4

Pour ce faire, vous devez utiliser les utilitaires disponibles dans le package Diagnostics. J'ai trouvé ce code et ça marche bien.

Cette ligne récupère les processus exactement. Vous pouvez alors extraire les propriétés de chaque processus.

`Process [] allProcs = Process.GetProcesses();

Le code complet est le suivant. Personnaliser comme nécessaire »

using System; 
using System.Diagnostics; 

public class ListProcs 
{ 
public static void Main() 
{ 
    int totMemory = 0; 
    Console.WriteLine("Info for all processes:"); 

    Process[] allProcs = Process.GetProcesses(); 
    foreach(Process thisProc in allProcs) 
    { 
    string procName = thisProc.ProcessName; 
    DateTime started = thisProc.StartTime; 
    int procID = thisProc.Id; 
    int memory = thisProc.VirtualMemorySize; 
    int priMemory = thisProc.PrivateMemorySize; 
    int physMemory = thisProc.WorkingSet; 
    totMemory += physMemory; 
    int priority = thisProc.BasePriority; 
    TimeSpan cpuTime = thisProc.TotalProcessorTime; 

    Console.WriteLine("Process: {0}, ID: {1}", procName, procID); 
    Console.WriteLine(" started: {0}", started.ToString()); 
    Console.WriteLine(" CPU time: {0}", cpuTime.ToString()); 
    Console.WriteLine(" virtual memory: {0}", memory); 
    Console.WriteLine(" private memory: {0}", priMemory); 
    Console.WriteLine(" physical memory: {0}", physMemory); 
    } 

    Console.WriteLine("\nTotal physical memory used: {0}", totMemory); 
    } 
    } 

Référencement de l'original article.

Questions connexes