2009-05-29 7 views
4

Comment puis-je récupérer l'heure de début d'un processus à l'aide du code C#? Je voudrais aussi savoir comment le faire avec la fonctionnalité intégrée dans Widows, si possible.Heure de début d'un processus

Répondre

6
public DateTime GetProcessStartTime(string processName) 
{ 
     Process[] p = Process.GetProcessesByName(processName); 
     if (p.Length <= 0) throw new Exception("Process not found!"); 
     return p[0].StartTime; 
} 

Si vous connaissez l'ID du processus, vous pouvez utiliser Process.GetProcessById (int processId). Additionaly si le processus est sur une machine différente sur le réseau, pour GetProcessesByName() et GetProcessById() vous pouvez spécifier le nom de la machine comme second paramètre.

Pour obtenir le nom du processus, assurez-vous que l'application est en cours d'exécution. Ensuite, allez dans le gestionnaire de tâches sur l'onglet Applications, faites un clic droit sur votre application et sélectionnez Aller à traiter. Dans l'onglet des processus, vous verrez le nom de votre processus en surbrillance. Utilisez le nom avant .exe dans le code C#. Par exemple une application Windows Forms sera répertoriée comme "myform.vshost.exe". Dans le code, vous devez dire

Process.GetProcessesByName("myform.vshost"); 
+0

Comment savoir l'heure de début sans code. Je veux dire de Windows lui-même. – Sauron

+0

Que voulez-vous dire par «à partir de Windows lui-même»? Votre question indique «dans le code C#». –

+0

J'ai aussi besoin du code. Juste je veux savoir comment le prendre de Windows? – Sauron

7

processus a une propriété "StartTime": http://msdn.microsoft.com/en-us/library/system.diagnostics.process.starttime.aspx

Voulez-vous l'heure de début du processus "en cours"? Process.GetCurrentProcess vous donnera que: http://msdn.microsoft.com/en-us/library/system.diagnostics.process.getcurrentprocess.aspx

+0

Comment connaître l'heure de début sans code. Je veux dire de Windows lui-même. – Sauron

+0

C'est une question distincte, et probablement pas liée à la programmation. –

0

Dans Code

Supposons que vous voulez trouver le temps de démarrage du Bloc-notes, en cours d'exécution avec PID 4548. Vous pouvez le trouver, en utilisant le PID ou le nom du processus , et l'imprimer à la fenêtre de débogage comme ceci:

//pick one of the following two declarations 
var procStartTime = System.Diagnostics.Process.GetProcessById(4548).StartTime; 
var procStartTime = System.Diagnostics.Process.GetProcessesByName("notepad").FirstOrDefault().StartTime; 
System.Diagnostics.Debug.WriteLine(procStartTime.ToLongTimeString()); 

Dans Windows

Vous pouvez utiliser Process Explorer, qui a une option pour afficher l'heure de début de processus, ou vous pouvez lister tous les processus en cours d'exécution, et leur temps de départ, à partir de la ligne de commande avec les éléments suivants:

wmic process get caption,creationdate 
0

Vous pouvez obtenir traiter les métadonnées en inspectant l'objet Process renvoyé par Process.GetProcessesByName().

0
System.Diagnostics.Process.GetProcessById(xxx).StartTime;//fails for certain processes with access denied