如何使进程在其终止时发送通知

本文关键字:通知 终止 何使 进程 | 更新日期: 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等)。