[英]How to make a process send notification upon its termination
我想以编程方式确定进程何时终止。 我在各个论坛中进行了搜索,并遇到了PsSetCreateProcessNotifyRoutine
例程。
另外,我遇到了类似的StackOverflow问题:
在接受的答案中,我看到可以使用的查询。 但是,我无法完全理解查询。
有人可以建议我实施解决方案的方法吗?
您可以自己启动进程,也可以通过枚举Process.GetProcesses()
或调用Process.GetProcessesByName(...)
找到它。
无论如何,您都会有一些处理句柄p
。 现在,您可以订阅它的Exited
事件,或者等待p.WaitForExit()
。
该答案基于您的C#
标签。 但是,使用PowerShell
它也可以那样工作。 只是语法可能会改变。 因此,您将需要探索PowerShell
的Process API( Start-Process
等)。
基本上,您需要连接到Windows Management API,该API允许您侦听已启动和已停止的进程。 WMI将通知发送到您的程序后,您将可以控制其中一个(基于答案 )
private void ProcessEnded(object sender, EventArrivedEventArgs e)
private void ProcessStarted(object sender, EventArrivedEventArgs e)
从参数中,您将能够获取进程名称。
这是您以托管代码接收通知的方式。 现在,下一步将是将此通知发送到您的脚本,并根据它是什么,可以使用与WCF的进程间通信,RESTfull调用,使用参数运行脚本等。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.