gpt4 book ai didi

delphi - 比 TerminateProcess 更友善的方法?

转载 作者:行者123 更新时间:2023-12-03 14:52:16 26 4
gpt4 key购买 nike

我有一个备份应用程序,它将在备份之前关闭用户定义的正在运行的程序,以便可以在备份之前关闭并刷新打开的数据文件。备份完成后,它将重新启动列表中的程序。

我使用 Caption 和 PostMessage(AppHandle,WM_CLOSE,0,0) 获取窗口句柄没有问题;这适用于大多数应用程序,但不适用于在通知区域(系统托盘)中运行的应用程序

目前我正在使用 TerminateProcess(,它适用于那些通知区域应用程序,但它会使文件保持打开状态,因为 Windows 会绕过任何关闭指令并直接关闭这些应用程序。

我进行了长时间的搜索,但找不到更好的方法来关闭通知区域应用程序。有人可以帮忙吗?

谢谢

最佳答案

为了优雅地关闭程序,您需要了解该程序期望如何关闭。如果关闭主窗口可以完成此操作,那么您需要知道如何识别“主”窗口。

程序不在通知区域“内”运行。他们在那里显示图标。任何带有通知图标的程序也必须有一个窗口(因为 shell 通过向窗口发送消息来告诉程序该图标已被单击)。即使窗口不可见,它仍然必须存在。如果您可以确定一些属性来标识与特定通知图标关联的窗口,那么您可以将其关闭。然而,并没有一套标准的属性可供寻找。每个程序可以以不同的方式执行此操作。

即使您找到了要查找的窗口,关闭它也可能不是程序期望的终止方式。它可能需要来自通知图标菜单的某个命令,或者程序显示的对话框发送的某些消息。

关于delphi - 比 TerminateProcess 更友善的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6392344/

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