【问题标题】:Fire an event when a process' window is closed, not when the process has exited在进程的窗口关闭时触发事件,而不是在进程退出时触发
【发布时间】:2015-08-13 07:15:49
【问题描述】:

我开始一个进程:

var process = Process.Start("somestuff.bat");

但是,当一些事情完成时,它并没有杀死进程,只是关闭了窗口,所以很自然:

process.Exited += ...

永远不会开火。

那么,有没有办法以某种方式获取窗口句柄,或者任何方便的 process 并在该窗口关闭时触发一个方法?

【问题讨论】:

  • 你想在关闭窗口时杀死进程?
  • 不,窗口关闭了,但是进程还在运行,我想在窗口关闭时杀死进程(不知道什么时候会发生)
  • 所以在这里你可以使用WindowClosed或WindowClosing事件..你知道这些事件吗?

标签: c# .net windows process


【解决方案1】:
Use this make closing event..

XML Closing="Window_Closing"

private void Window_Closing(object sender, System.ComponentModel.CancelEventArgse)
{
    KillProcess();
}

【讨论】:

    【解决方案2】:

    您需要在进程上设置一些内容以使其触发事件

    var process = Process.Start("somestuff.bat");
    process.EnableRaisingEvents = true;
    process.Exited += .. // note here, this runs in the process thread not the UI
    

    退出然后触发

    【讨论】:

      【解决方案3】:

      试试这个可以解决你的问题

      foreach (var process in Process.GetProcessesByName(".exe"))
      {
          process.Kill();
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-09-14
        • 1970-01-01
        • 2017-05-07
        • 1970-01-01
        • 1970-01-01
        • 2023-01-12
        • 2011-02-26
        相关资源
        最近更新 更多