gpt4 book ai didi

delphi - 以编程方式重新启动 Delphi 应用程序

转载 作者:行者123 更新时间:2023-12-03 14:49:50 25 4
gpt4 key购买 nike

应该不可能运行我的应用程序的多个实例。因此项目源码包含:

CreateMutex (nil, False, PChar (ID));
if (GetLastError = ERROR_ALREADY_EXISTS) then
Halt;

现在我想以编程方式重新启动我的应用程序。通常的方法是:

AppName := PChar(Application.ExeName) ;
ShellExecute(Handle,'open', AppName, nil, nil, SW_SHOWNORMAL) ;
Application.Terminate;

但是由于互斥体的原因,这在我的情况下不起作用。即使我在启动第二个实例之前释放互斥体,它也不会工作,因为关闭需要一些时间并且两个实例无法并行运行(由于公共(public)资源和其他影响)。

有没有办法重新启动具有此类特征的应用程序? (如果可能,无需额外的可执行文件)

提前致谢。

最佳答案

也许你应该跳出框框思考。您可以简单地创建另一个可执行文件来等待您的应用程序关闭然后再次启动它,而不是与互斥体/实例逻辑搞混。作为额外的好处,您可以稍后使用此机制来更新某些主应用程序的二进制文件。提升运行速度也比在同一应用程序内维护不同的完整性级别等要容易得多。

关于delphi - 以编程方式重新启动 Delphi 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4498276/

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