C#检测其他程序是否已打开和关闭(如防病毒)

时间:2016-06-27 17:25:31

标签: c# process monitoring system.diagnostics

我是Stack Overflow的新手。

我认为我从一个令人费解的问题开始。 如何监视系统并检测何时创建新进程以及何时关闭它们。

我不知道如何做到这一点,每隔一段时间不断更新的列表框轮询System.Diagnostics.Process.GetProcesses()。

我需要一个监视器,在添加新进程时触发事件,并在进程关闭时触发单独的事件。

我没有寻找在循环或计时器上运行的进程监视器。我需要一个到进程列表的直接接口,所以这个线程.NET Process Monitor 不回答我的问题。 想法?

- Caustic

2 个答案:

答案 0 :(得分:0)

您可以使用Process.GetProcessesByName方法(字符串)来查找特定进程是否正在运行。

 System.Diagnostics.Process[] proc = System.Diagnostics.Process.GetProcessesByName(sProcessName);
  if (proc.Length > 0)
  {
      MessageBox.Show(String.Format("{0}is  running!", sProcessName), sProcessName);
  }
  else
  {
      MessageBox.Show(String.Format("{0}is not running!", sProcessName), sProcessName);

   }

答案 1 :(得分:0)

我会使用TraceEvent来启动Realtime Session并激活提供商Microsoft-Windows-Kernel-Process

enter image description here

在代码中,您可以看到ProcessStartProcessStop处理,在这里您可以添加自己的代码来处理获取此数据的时间。