gpt4 book ai didi

delphi - 有关如何调用应用程序并等待其退出的优质代码示例

转载 作者:行者123 更新时间:2023-12-03 15:22:08 26 4
gpt4 key购买 nike

使用:德尔福XE2; Windows 32位VCL应用程序

在我的 Delphi 应用程序中,我需要使用 ShellExecute 调用应用程序,并等到它完成后再继续。

我在这里看到很多有关 ShellExecute 和 MsgWaitForMultipleObjects 的示例,但不知道哪一个是最好的,因为它们大多在做不推荐的事情,即。还使用了很多人不推荐的Application.ProcessMessages。

我看到 NFX 的回答在此post它不使用 Application.ProcessMessages,但不确定它是否正确或最佳,因此出现这个问题。

如果您能提供高质量的代码示例,我们将非常高兴。

TIA 寻求任何答案。

最佳答案

ShellExecuteEx()CreateProcess() 都返回一个可以等待的 HANDLE。当生成的进程退出时,HANDLE 会发出信号。

如果您必须在等待时抽取消息队列,请使用 MsgWaitForMultipleObjects() 来检测何时有新消息等待处理。否则,您可以使用 WaitForSingleObject() 代替。

NFX 的答案不使用 Application.ProcessMessages() 但它仍然会泵送消息,因此根本问题仍然存在。如果您在主线程中进行等待,则无法避免这种情况,除非您不介意向用户(或操作系统)呈现无响应的 UI。您也可以在工作线程中进行等待,这样您就不需要在等待时发送消息,并且您的 UI 也不会被阻塞。如果需要,您可以在等待时禁用 UI 或显示状态 UI。

关于delphi - 有关如何调用应用程序并等待其退出的优质代码示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23034006/

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