Mar*_*lka 8 delphi shellexecute delay
我有一个希望很快的问题:是否有可能延迟执行ShellExecute一点?
我有一个autoupdater应用程序.在下载所有必需的文件等之后,它会将当前文件重命名为*.OLD,将新文件重命名为之前的文件.很简单.但后来我需要删除那些.OLD文件.这个'清理'程序在MainForm.OnActivate上执行(检查它是否是第一个激活proc).但这显然发生得太快(我从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;
Run Code Online (Sandbox Code Playgroud)
此过程应该重新启动应用程序.我确定删除问题是由第二个应用程序的快速启动引起的,因为如果我自己重新启动它,给它一点时间,文件会被正常删除.
tl; dr版本:我需要调用ShellExecute()等待(0.1秒左右)然后THEN执行命令.
注意
我尝试使用-ping命令尝试延迟它,但它没有用.
非常感谢你提前
编辑:改述
我需要这个发生|| 第一个应用关闭; 等待100毫秒; 第二个应用程序打开 ||.我需要先调用ShellExecute,然后等待调用应用程序完全关闭,然后执行shell(即打开第二个应用程序)
你正在做一个autopatcher吗?
我遇到了同样的问题,这就是我绕过它的方式:
你使用参数"--delay"运行第二个应用程序或类似的东西.第二个应用处理参数"--delay"并休眠100毫秒,然后继续正常运行.