有没有办法在不使用Process.CloseMainWindow()
的情况下优雅地结束流程?
我在列表中有一堆进程,我想结束。该过程应在没有Process.Kill()
的情况下结束,以确保它们清理并结束其子进程。
我尝试了 CloseMainWindow ,但遗憾的是它会让我的进程弹出一个带有&#34的消息框;你真的想要结束该程序吗?" [是] [否]我想要避免。
进程有WM_QUERYENDSESSION
的消息处理程序,但是当我尝试向进程发送WM_QUERYENDSESSION
消息时,它没有做出反应。它只对WM_QUIT
作出反应,但行为看起来就像调用Process.Kill()
时的行为。
我还没找到合适的解决方案。希望我没有忽视这里的事情......
答案 0 :(得分:1)
发送WM_CLOSE
消息与单击窗口上的关闭按钮几乎相同。应用程序将能够阻止此请求或设置“保存更改”确认对话框。
除此之外的任何事情都可能导致数据丢失。 WM_QUIT
不是您应该发送的内容。
WM_QUERYENDSESSION
是一个查询,您先发送,然后发送WM_ENDSESSION
,但并非所有应用程序都会处理这些消息。
Win32没有主窗口属性,它是一个.NET概念。
如果您计划在完成任何操作后再次重新启动这些应用程序,那么您应该研究的是重启管理器功能。
答案 1 :(得分:0)
过了一段时间,我承认这个明确的问题似乎没有真正的答案。
由于我控制了这两个部分,我刚刚删除了"你真的想退出吗?"弹出如IInspectable假设,并通过打开的管道向子进程发送消息,如Sefe假设。