0

如何在任何进程(.exe)前获得通知。记事本在 C# 中关闭?

4

1 回答 1

9

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

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

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

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

于 2012-04-05T05:27:26.460 回答