2016-03-03 4 views
1

Мне нужно отслеживать идентификаторы процессов, порожденных из моей программы, включая идентификатор моего корневого процесса приложения C#, то есть процесс, щелкая его значок.Отслеживать идентификаторы процессов процессов, порожденных из моей программы

Кому-нибудь еще нужно было это сделать?

Какой хороший надежный способ сделать это?

Я представляю List(), но DataTable может быть еще лучше в зависимости от доступных данных.

+0

Что это вы называете "корневой процесс"? Появляется ли приложение для создания дополнительных процессов? –

+0

@ Томас Левеске Я не знал, как еще это описать. По корневому процессу я имею в виду первый процесс, созданный, когда пользователи моего приложения дважды кликают exe. –

+2

Обычно приложение будет только одним процессом. Вы, наверное, смешиваете терминологию здесь? –

ответ

1
string process = "notepad.exe"; 
string sql = string.Format("select * from win32_process where name='{0}'", process); 
ManagementObjectSearcher searcher = new ManagementObjectSearcher(sql); 
StringBuilder sb = new StringBuilder(); 
foreach (ManagementObject mo in searcher.Get()) 
{ 
     string pid = mo.Properties["ProcessId"].Value.ToString(); 
     string cimtime = mo.Properties["CreationDate"].Value.ToString(); 

     cimtime = cimtime.Substring(0, cimtime.IndexOf('.')); 
     string format = "yyyyMMddHHmmss"; 
     DateTime startTime = DateTime.ParseExact(cimtime, format, System.Globalization.CultureInfo.CurrentCulture); 
     sb.AppendFormat("PID:{0}\t启动时间:{1}", pid, startTime); 
     sb.AppendLine(); 
} 
MessageBox.Show(sb.ToString()); 

enter image description here

0
Process currentProcess = Process.GetCurrentProcess(); 
var id = currentProcess.Id; 

Вам потребуется Refernce к

using System.Diagnostics; 
Смежные вопросы