有没有办法在用户在c#中执行或终止程序时收到通知?我说的是用户可以执行的所有程序,而不仅仅是某个程序。我想在用户执行.exe文件时收到通知。
我甚至无法想到谷歌的关键词。
任何建议都将不胜感激!
答案 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。