【问题标题】:How to make a process send notification upon its termination如何使进程在终止时发送通知
【发布时间】:2013-05-21 09:10:12
【问题描述】:

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

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

.NET Events for Process executable start

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

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

【问题讨论】:

    标签: c# windows process


    【解决方案1】:

    基本上,您需要连接到 Windows Management API,它允许您监听启动和停止的进程。一旦 WMI 向您的程序发送通知,您将在其中之一中获得控制权(基于 answer

    private void ProcessEnded(object sender, EventArrivedEventArgs e)
    private void ProcessStarted(object sender, EventArrivedEventArgs e)
    

    您将能够从参数中获取进程名称。

    这是您在托管代码中接收通知的方式。现在下一步是将此通知发送到您的脚本,根据具体情况,您可以使用 WCF 的进程间通信、RESTfull 调用、运行带参数的脚本等。

    【讨论】:

    • 谢谢这似乎是我正在寻找的。我将进一步探索它。
    【解决方案2】:

    您要么自己启动该过程,要么通过枚举Process.GetProcesses() 或调用Process.GetProcessesByName(...) 找到它。

    无论如何,您都会有一些进程句柄p。现在您可以订阅它的Exited 事件或通过p.WaitForExit() 等待。

    此答案基于您的C# 标签。但是,使用PowerShell 也可以这样工作。只是语法可能会改变。所以你需要探索PowerShell 的Process API(Start-Process 等)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-03-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-06
      • 2016-05-05
      相关资源
      最近更新 更多