如何在c#中通知程序执行和终止?

时间:2009-08-15 00:40:47

标签: c# notifications

有没有办法在用户在c#中执行或终止程序时收到通知?我说的是用户可以执行的所有程序,而不仅仅是某个程序。我想在用户执行.exe文件时收到通知。

我甚至无法想到谷歌的关键词。

任何建议都将不胜感激!

2 个答案:

答案 0 :(得分:3)

我所知道的最接近的事情就是使用Hooks。

您可以使用WH_SHELL Hooks在系统创建或销毁新的非拥有顶级窗口时接收通知。这与流程不同,但在很多情况下它非常接近,并且在其他情况下可能更有用(因为它会显示一个新的word文档窗口在一个已经打开之后打开,即使它们正在使用共享处理)。

您可以将其与EnumProcess结合使用,以检查进程列表是否已更改。这适用于跟踪Windows应用程序(但不适用于在现有控制台中运行的服务或基于控制台的应用程序)。

答案 1 :(得分:3)

在Microsoft .NET Framework 3.5中,您可以获取Process es列表并注册Process.Exited事件。我想有人可以实现一个轮询系统,在这个系统中,他们不断寻找新的进程,但是在启动时不能真正通知你。

- 编辑 -

您可能会发现this article有用。如果您愿意编写内核模式驱动程序,则可以控制每个进程的开始和结束。

现在,如果真的想要狂野,你可以加入微软Detours。这是一个interesting article