我想以编程方式确定进程何时终止。 我在各种论坛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
等)。