gpt4 book ai didi

delphi - 在执行 ShellExecute 之前等待?

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

我有一个希望很快的问题:是否可以稍微延迟 ShellExecute 的执行?

我有一个带有自动更新程序的应用程序。下载所有必需的文件等后,它将当前文件重命名为 *.OLD,并将新文件重命名为以前的文件。够简单的。但随后我需要删除那些 .OLD 文件。这个“清理”过程在 MainForm.OnActivate 上执行(检查它是否是第一个激活过程)。但这显然发生得太快了(我从DeleteFile中得到False)。程序如下:

procedure TUpdateForm.OKBtnClick(Sender: TObject);
const SHELL = 'ping 127.0.0.1 -n 2';
begin
ShellExecute(0,'open',pchar(SHELL+#13+Application.ExeName),nil,nil,SW_SHOWNORMAL);
Application.Terminate;
end;

此过程应该重新启动应用程序。我确信删除问题是由第二个应用程序的快速启动引起的,因为如果我自己重新启动它,给它一点时间,文件就会正常删除。

tl;dr 版本:我需要调用 ShellExecute(),它会等待一段时间(0.1 秒左右),然后执行命令。

注意

我尝试使用 -ping 命令来尝试延迟它,但没有成功。

提前非常感谢

编辑:重新措辞

我需要这件事发生|| 第一个应用程序关闭;等待100毫秒;第二个应用程序打开 ||。我需要先调用 ShellExecute,然后等到调用应用程序完全关闭自身,然后执行 shell(即打开第二个应用程序)

最佳答案

你正在做自动修补程序吗?

我也遇到了同样的问题,这就是我绕过它的方法:

您使用参数“--delay”或类似的参数运行第二个应用程序。第二个应用程序处理参数“--delay”并休眠 100 毫秒,然后继续正常运行。

关于delphi - 在执行 ShellExecute 之前等待?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6009648/

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