gpt4 book ai didi

c# - 如何关闭(而不是终止)已最小化到系统托盘的应用程序?

转载 作者:行者123 更新时间:2023-11-30 21:14:00 24 4
gpt4 key购买 nike

我正在编写一个关闭程序的应用程序,更改其数据文件然后重新打开它。我注意到如果我使用 process.Kill() 会有一些数据没有写入文件。

如果我使用 process.CloseMainWindow(),主窗口关闭但进程最小化到启动托盘。

有什么方法可以向进程发送优雅的关闭消息吗?

如果它很重要,那就是我要关闭的 Grindstone。

最佳答案

不幸的是,要优雅地终止不合作的应用程序,您无能为力。

建议的方法是将 WM_CLOSE 消息发送到感兴趣的窗口;这在这里不起作用,因为该应用程序选择按照您的描述隐藏自己。但是,这是 Microsoft 认可的唯一方法。

下一步是更严厉一些,将 WM_QUIT 消息发送到线程。这有点问题,因为您必须使用某种形式的进程/线程枚举和 PInvoke PostThreadMessage 找到有问题的线程。发布 WM_QUIT。不过MSDN好像suggest你不应该这样做(搜索 WM_QUIT)。但实际上,它应该可行。

如果这不起作用,那么您只剩下 Process.Kill 了。

更新: 以上是我自己的理解,还有一个Microsoft KB article在同一主题上。它适用于 Win32(非托管代码),但可以毫不费力地调整这些想法。

关于c# - 如何关闭(而不是终止)已最小化到系统托盘的应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6487211/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com