2013-08-04 14 views
9

Czy jest możliwe, w języku C#, uzyskanie listy uruchomionych procesów (nie procesów serwisowych, ale rzeczywistych aplikacji) i uzyskać datę, kiedy aplikacja się uruchomiła? Lub TimeSpan, a nawet liczba całkowita czasu działania procesu?Czy można określić, jak długo proces został uruchomiony?

+0

["pobierz listę uruchomionych procesów"] (http://www.google.com/search?q=c%23+get+list+wykonać+processes), ["C# get proces start time "] (http://www.google.com/search?q=c%23+get+process+start+time) –

Odpowiedz

12

Process.GetProcesses pobierze listę uruchomionych procesów.

Każdy Process ma właściwość StartTime że

Pobiera czas, który wiąże się proces został uruchomiony.

Po prostu odejmij od DateTime.Now, aby sprawdzić, jak długo trwa proces.

static void Main(string[] args) 
{ 
    var procs = Process.GetProcesses(); 
    foreach (var proc in procs) { 
     TimeSpan runtime; 
     try { 
      runtime = DateTime.Now - proc.StartTime; 
     } 
     catch (Win32Exception ex) { 
      // Ignore processes that give "access denied" error. 
      if (ex.NativeErrorCode == 5) 
       continue; 
      throw; 
     } 

     Console.WriteLine("{0} {1}", proc, runtime); 
    } 

    Console.ReadLine(); 
} 
+0

Nie wiedziałem, że proces ma właściwość rozpoczęcia czasu :) – Kurubaran

Powiązane problemy