C# 检测其他程序是否打开和关闭(如防病毒软件)
C# Detect if other programs are Opened and Closed (like an antivirus)
我是 Stack Overflow 的新手。
我以为我会从一个令人费解的问题开始。
如何监控系统并检测新进程何时创建以及何时关闭。
除了每秒不断刷新列表框轮询 System.Diagnostics.Process.GetProcesses() 之外,我对如何执行此操作一无所知。
我需要一个在添加新进程时触发事件的监视器和一个在进程关闭时触发的单独事件。
我不是在寻找在循环或计时器上运行的进程监视器。我需要进程列表的直接接口,所以这个线程 .NET Process Monitor
不回答我的问题。
想法?
-- 腐蚀性
您可以使用 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);
}
我会使用 TraceEvent, to start a Realtime Session 并激活提供商 Microsoft-Windows-Kernel-Process
在代码中您可以看到 ProcessStart
和 ProcessStop
处理,您可以在此处添加自己的代码以在获取此数据时进行处理。
我是 Stack Overflow 的新手。
我以为我会从一个令人费解的问题开始。 如何监控系统并检测新进程何时创建以及何时关闭。
除了每秒不断刷新列表框轮询 System.Diagnostics.Process.GetProcesses() 之外,我对如何执行此操作一无所知。
我需要一个在添加新进程时触发事件的监视器和一个在进程关闭时触发的单独事件。
我不是在寻找在循环或计时器上运行的进程监视器。我需要进程列表的直接接口,所以这个线程 .NET Process Monitor 不回答我的问题。 想法?
-- 腐蚀性
您可以使用 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);
}
我会使用 TraceEvent, to start a Realtime Session 并激活提供商 Microsoft-Windows-Kernel-Process
在代码中您可以看到 ProcessStart
和 ProcessStop
处理,您可以在此处添加自己的代码以在获取此数据时进行处理。