代码之家  ›  专栏  ›  技术社区  ›  jinsungy

使用C#.net检测进程已在windows中运行

  •  8
  • jinsungy  · 技术社区  · 17 年前

    如何检测进程是否已在Windows任务管理器下运行?我也想知道内存和cpu的使用情况。

    6 回复  |  直到 17 年前
        1
  •  28
  •   ZombieSheep    17 年前

    简单的例子。..

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

    哎呀。..忘记了mem的用法等等。。。

    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,我已经准备好回家了。:)

        2
  •  7
  •   Jimi    7 年前

    你查过了吗 System.Diagnostics.Process 类。

        3
  •  3
  •   Ralph Willgoss    13 年前

    如果你想了解正在运行的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();                      
       }
    }
    
        4
  •  3
  •   Jimi    7 年前

    您可以使用 System.Diagnostics.Process 类。
    有一个 GetProcesses() 以及a GetProcessesByName() 该方法将获取数组中所有现有进程的列表。

    这个 Process 对象具有检测进程是否正在运行所需的所有信息。

        5
  •  1
  •   Community Mohan Dere    9 年前

    您可以使用WMI查询以下内容

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

    不过,WMI的处理器使用有点棘手。你可能更适合使用系统。诊断。过程,如 Ian Jacobs 建议。

        6
  •  0
  •   Jimi    7 年前

    大致如下:

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