如何在 C# 中退出任何进程(.exe)时获取通知(例如记事本)



当任何进程(.exe)在C#中关闭时如何获得通知?

最简单的方法是为要监视的记事本进程创建一个System.Diagnostics.Process

  Process p = Process.GetProcessesByName("notepad.exe").First();
  p.Exited += (sender, args) => Debug.WriteLine("Process has exited!");

从理论上讲,您可以对所有正在运行的进程执行此操作(使用 Process.GetProcesses() ),但这不会让您能够收到任何未来进程的通知,只是在您开始监视时正在运行的进程。

一个可以为您提供有关正在关闭的任何进程/窗口的信息的更低级别的解决方案是使用 CBT 挂钩,此处提供了 .NET 包装器,但这需要更多的手动管理,因为它为您提供有关关闭 Win32 窗口的信息,而不仅仅是进程。

最新更新