繁体   English   中英

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

[英]How to make a process send notification upon its termination

我想以编程方式确定进程何时终止。 我在各个论坛中进行了搜索,并遇到了PsSetCreateProcessNotifyRoutine例程。

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

.NET事件,用于进程可执行文件启动

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

有人可以建议我实施解决方案的方法吗?

您可以自己启动进程,也可以通过枚举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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM