检测进程已经在使用C#.net的窗口中运行

如何检测一个进程是否已经在Windows任务pipe理器下运行? 我想获得内存和CPU使用率以及。

你有没有看过System.Diagnostics.Process类。

简单的例子…

bool processIsRunning(string process) { return (System.Diagnostics.Process.GetProcessesByName(process).Length != 0); } 

糟糕…忘记了内存使用情况等…

 bool processIsRunning(string process) { System.Diagnostics.Process[] processes = System.Diagnostics.Process.GetProcessesByName(process); foreach (System.Diagnostics.Process proc in processes) { Console.WriteLine("Current physical memory : " + proc.WorkingSet64.ToString()); Console.WriteLine("Total processor time : " + proc.TotalProcessorTime.ToString()); Console.WriteLine("Virtual memory size : " + proc.VirtualMemorySize64.ToString()); } return (processes.Length != 0); } 

(我将把数据从方法中提取出来的机制留给你 – 现在是17:15,我准备回家了:)

您可以使用System.Diagnostics.Process类。 有一个GetProcesses()和一个GetProcessesByName()方法,将获得数组中所有现有进程的列表。 Process对象具有所有需要检测进程是否正在运行的信息。

如果您想了解正在运行的IE进程:

 System.Diagnostics.Process[] ieProcs = Process.GetProcessesByName("IEXPLORE"); if (ieProcs.Length > 0) { foreach (System.Diagnostics.Process p in ieProcs) { String virtualMem = p.VirtualMemorySize64.ToString(); String physicalMem = p.WorkingSet64.ToString(); String cpu = p.TotalProcessorTime.ToString(); } } 

您可以使用WMI来查询沿线的内容

 "SELECT * FROM Win32_Process WHERE Name = '<your process name here>'" 

不过,对于WMI来说,处理器的使用情况有点棘手。 正如伊恩·雅各布斯(IanJacobs)所建议的那样,你可能更喜欢使用System.Diagnostics.Process。

像这样的东西:

  foreach ( WindowsProcess in Process.GetProcesses) { if (WindowsProcess.ProcessName == nameOfProcess) { Console.WriteLine(WindowsProcess.WorkingSet64.ToString); Console.WriteLine(WindowsProcess.UserProcessorTime.ToString); Console.WriteLine(WindowsProcess.TotalProcessorTime.ToString); } }