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

我想以编程方式确定进程何时终止。 我在各种论坛search,并遇到了PsSetCreateProcessNotifyRoutine例程。

另外,我遇​​到了一个类似的StackOverflow问题:

进程可执行文件的.NET事件启动 。

在接受的答案中,我看到了一个我可以使用的查询。 但是我无法完全理解这个查询。

有人可以build议我可以实施我的解决scheme?

基本上,您需要挂接到Windows Management 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的Process API( Start-Process等)。