繁体   English   中英

如果启动了新进程(应用程序!),如何捕获事件?

[英]How to capture the event if a new process (application!) is started?

我想有一些事件处理程序,如果启动了新的应用程序,则会引发该事件处理程序。 我听说可以通过使用钩子来实现,但是我只能找到基于鼠标/键盘事件的示例。

如何在C#中创建此类钩子的示例链接是什么?

哦,顺便说一句:不,我不想使用WMI ,它也可以是一种解决方案,但在我看来,这不是一个选择。

您可以使用一种绝妙的解决方案,即对系统中的进程进行轮询。

Process[] currentProcessList = Process.GetProcesses();

List<Process> newlyAddedProcesses = new List<Process>();
while (true)
{
    newlyAddedProcesses.Clear();
    Process[] newProcessList = Process.GetProcesses();

    foreach (Process p in newProcessList)
    {
        if (!currentProcessList.Contains(p))
        {
            newlyAddedProcesses.Add(p);
        }
    }

    //TODO: do your work with newlyAddedProcesses

    System.Threading.Thread.Sleep(500);
    currentProcessList = newProcessList;
}

如果您的应用程序不需要很高的精度,则可以在两次轮询之间设置较大的睡眠时间,这样可以减少耗时。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM