如何使进程在其终止时发送通知
本文关键字:通知 终止 何使 进程 | 更新日期: 2023-09-27 18:14:41
我想以编程方式确定进程何时终止。我在各种论坛上搜索,遇到了PsSetCreateProcessNotifyRoutine
例程。
同时,我遇到了一个类似的StackOverflow问题:
。. NET事件用于进程可执行启动。
在可接受的答案中,我看到了一个可以使用的查询。然而,我不能完全理解这个问题。
谁能建议一个方法,我可以实现我的解决方案?
基本上,您需要挂钩到Windows管理API,它允许您侦听启动和停止的进程。一旦WMI发送通知到您的程序,您将获得控制权(基于答案)
private void ProcessEnded(object sender, EventArrivedEventArgs e)
private void ProcessStarted(object sender, EventArrivedEventArgs e)
从参数中可以得到进程名。
这是在托管代码中接收通知的方式。现在,下一步是将此通知发送到脚本,根据它是什么,您可以使用与WCF的进程间通信,RESTfull调用,运行带有参数的脚本等。
您可以自己启动进程,或者通过枚举Process.GetProcesses()
或调用Process.GetProcessesByName(...)
来找到它。
在任何情况下,您将有一些进程处理p
。现在你可以订阅它的Exited
事件或等待p.WaitForExit()
。
这个答案是基于你的C#
标签。然而,与PowerShell
它也会这样工作。只是语法可能会改变。因此,您需要探索PowerShell
的进程API (Start-Process
等)。